馬斯克說狗幣牛逼,我說idea插件助你盯盤摸魚

2021-03-02 滑板上的老砒霜
老馬和老馬

前幾天,馬斯克不僅發推文表示自己最喜歡的加密貨幣可能是狗狗幣,其還把自己的Twitter帳戶簡介改為了「狗狗幣前CEO 」。

一代「帶貨達人」,「矽谷鋼鐵俠」,好像當了首富之後有點任性啊,這和馬老闆有的一拼啊,兩個老馬都這麼讓人眼前一亮,這讓我想起了宋丹丹小品中的一句話:「他們名人都這樣」,有錢之後就任性,這玩意好像寫在人們的基因裡了。

馬斯克為幣圈的一陣搖旗吶喊,直接帶起了一波上漲行情,有人歡喜有人愁,真是太熱鬧了。當然,小弟作為一個不炒幣的小屌絲,別人的熱鬧,與我無關,畢竟又窮又膽小,但是,作為一個上班的IT男,如何在老闆眼皮子低下對數字貨幣盯盤,這個還是可以考慮考慮的,畢竟這是個分分鐘幾百萬上下的生意,為韭菜服務是一個很重要的使命。

怎樣躲老闆

作為一個android開發者,你的工作就是在android studio上寫代碼,離開了android studio頁面,基本上就可以認為你摸魚了,而android studio又是基於idea開發的,如何摸魚盯盤又不被發現,idea插件無疑就是一個最好的選擇了。

開發效果

由效果可以看出,這裡在idea中創建了一個ToolWindow,在ToolWindow中展示貨幣信息,每隔30秒進行一次刷新。

API的獲取

行情信息的api通過非小號公共api獲取的,文檔見:** https://github.com/xiaohao2019/API-docs/blob/master/PublicApi_CN.md **

數據的獲取

通過上面的api,定時獲取加密貨幣的行情數據,然後通過EventBus將數據用事件包裝發出去,然後在BitCoinWindow中接收數據並展示。

object TickerNetDataApi {
private var isStart = false
private var lastTickerDataList: List<TickerData>? = null
fun scheduleGetTickerData() { if (!isStart) { val scheduledExecutorService = Executors.newSingleThreadScheduledExecutor() scheduledExecutorService.scheduleAtFixedRate(Runnable { getTickerData() }, 0, 30, TimeUnit.SECONDS) isStart = true } }
fun getTickerData() { val uri = "https://fxhapi.feixiaohao.com/public/v1/ticker" val paratmers: MutableList<NameValuePair> = ArrayList() paratmers.add(BasicNameValuePair("start", "0")) paratmers.add(BasicNameValuePair("limit", "100")) try { val tickerDataList = makeAPICall(uri, paratmers) tickerDataList?.let { val lastData = lastTickerDataList if (lastData == null || lastData[0].last_updated > it[0].last_updated) { org.greenrobot.eventbus.EventBus.getDefault().post(TickerDataEvent(tickerDataList)) } } } catch (e: Exception) { e.printStackTrace() }
}
@Throws(URISyntaxException::class, IOException::class) fun makeAPICall(uri: String, parameters: List<NameValuePair?>?): List<TickerData>? { var responseContent: String? = "" val query = URIBuilder(uri) query.addParameters(parameters) val client = HttpClients.createDefault() val request = HttpGet(query.build()) request.setHeader(HttpHeaders.ACCEPT, "application/json") val response = client.execute(request) response.use { response -> println(response.statusLine) val entity = response.entity responseContent = EntityUtils.toString(entity) EntityUtils.consume(entity) } return responseContent?.let { GsonUtil.fromJson(it, object : TypeToken<List<TickerData>>() { }.type) } }

}

創建ToolWindow

ToolWindow是ide的子window,通常用來展示一些信息,比較常見的就是android開發過程中的項目結構目錄

創建ToolWindow的方法還是很簡單的,首先要創建BitCoinToolWindowFactory繼承自ToolWindowFactory

class BitCoinToolWindowFactory : ToolWindowFactory {
override fun createToolWindowContent(project: Project, toolWindow: ToolWindow) { val bitCoinWindow = BitCoinWindow() val contentFactory = ContentFactory.SERVICE.getInstance() val content = contentFactory.createContent(bitCoinWindow.getContent(), "", false) toolWindow.contentManager.addContent(content) TickerNetDataApi.scheduleGetTickerData() }
}

其中BitCoinWindow就是用來展示信息的UI,idea插件一般是使用swing來構建UI的,這裡用JTableLayout進行UI表格的展示

package com.skateboard.coinsplugin.ui
import com.skateboard.coinsplugin.data.TickerDataEventimport org.greenrobot.eventbus.EventBusimport org.greenrobot.eventbus.Subscribeimport org.greenrobot.eventbus.ThreadModeimport java.util.*import javax.swing.JPanelimport javax.swing.JScrollPaneimport javax.swing.JTableimport javax.swing.table.DefaultTableModelimport javax.swing.table.TableColumn
class BitCoinWindow {
private lateinit var contentPanel: JPanel
private lateinit var contentScrollPane: JScrollPane
private lateinit var coinsTable: JTable
private val columnList = listOf("排名", "名稱", "最新價格", "24h的成交額", "流通市值", "流通數量", "總發行量", "最大發行量", "1小時漲跌幅", "24小時漲跌幅", "7天漲跌幅", "更新時間")
init { EventBus.getDefault().register(this) val tableModel = coinsTable.model as DefaultTableModel for (index in columnList.indices) { val column = columnList[index] tableModel.addColumn(column) } coinsTable.autoResizeMode = JTable.AUTO_RESIZE_OFF }
fun getContent(): JPanel = contentPanel
//更新數據 @Subscribe(threadMode = ThreadMode.MAIN) fun onTickerDataEvent(event: TickerDataEvent) { if (coinsTable.rowCount <= 0) { for (tickerData in event.tickerDataList) { val tableModel = coinsTable.model as DefaultTableModel tableModel.addRow(tickerData.toArray()) } } else { val tableModel = coinsTable.model as DefaultTableModel val rowVector = Vector<Vector<String>>() for (tickerData in event.tickerDataList) { rowVector.add(tickerData.toVector()) } tableModel.setDataVector(rowVector, Vector(columnList)) coinsTable.repaint() } fitTableColumns(coinsTable) }
//適配表格寬度 private fun fitTableColumns(myTable: JTable) { val header = myTable.tableHeader val rowCount = myTable.rowCount val columns = myTable.columnModel.columns while (columns.hasMoreElements()) { val column = columns.nextElement() as TableColumn val col = header.columnModel.getColumnIndex(column.identifier); var width = (myTable.tableHeader.defaultRenderer.getTableCellRendererComponent( myTable, column.identifier , false, false, -1, col ).preferredSize.getWidth()).toInt() for (row in 0 until rowCount) { val preferedWidth = (myTable.getCellRenderer(row, col).getTableCellRendererComponent( myTable, myTable.getValueAt(row, col), false, false, row, col ).preferredSize.getWidth()).toInt() width = width.coerceAtLeast(preferedWidth) } header.resizingColumn = column column.width = width + myTable.intercellSpacing.width; } }}

在配置文件中註冊

在plugin.xml中註冊剛才創建的BitCoinToolWindowFactory

<idea-plugin>    <id>org.example.bitcoinplugin</id>    <name>比特幣行情插件</name>    <vendor email="support@yourcompany.com" url="http://www.yourcompany.com">YourCompany</vendor>
<description><![CDATA[ Enter short description for your plugin here.<br> <em>most HTML tags may be used</em> ]]></description>
<!-- please see https://www.jetbrains.org/intellij/sdk/docs/basics/getting_started/plugin_compatibility.html on how to target different products --> <depends>com.intellij.modules.platform</depends>
<extensions defaultExtensionNs="com.intellij"> <toolWindow id="綠油油" secondary="true" icon="AllIcons.General.Modified" anchor="right" factoryClass="com.skateboard.coinsplugin.ui.BitCoinToolWindowFactory"/> </extensions>
<actions> <!-- Add your actions here --> </actions></idea-plugin>

這裡ToolWindow的名稱叫做綠油油,這個名稱感覺和這個插件的氣質比較符合。

最後

當然,這個插件不可能作為真正的盯盤工具的,因為這個接口有些不穩定,而且不夠及時,只是作為idea插件編寫的一個小demo,各位大佬不要太較真,另外附上項目地址 ** https://github.com/skateboard1991/Chives **

求關注

掘金:https://juejin.cn/user/3650034331820743

相關焦點

  • 馬斯克吹捧的狗狗幣Dogecoin是什麼?
    狗狗幣之所以叫狗狗幣,真的是因為狗,確切說,是日本柴犬,Shiba Inu。狗狗幣的頭像即為日本柴犬。狗狗幣只是萬千加密貨幣中的一種,原本是灣區一名程式設計師Billy Markus為了證明,並且作為比特幣的改進示範而推出的加密貨幣。與比特幣限量發售的算法不同,狗狗幣發行總量巨大,足有1000億之多。
  • 馬斯克一句話,狗狗幣漲20%:興風作浪的民間「梗」幣引大佬注意
    今年夏天,他又透露說自己目前持有0.25個比特幣。 那麼馬斯克和狗狗幣是怎麼聯繫到一起的呢? 這個故事要從去年愚人節說起。 隨後狗狗幣官方@馬斯克,並配文「看來,現在你是CEO了……」
  • 馬斯克一句話,狗狗幣漲20%:興風作浪的梗幣和大佬的前世今生
    而且馬斯克跟很多科技公司CEO一樣,對加密貨幣的態度從不認可到感興趣,再到想投資經歷了一個曲折的過程。他還曾經表示過自己持有比特幣的,但持有的量很少。而且他表示朋友送給他1個比特幣,但他自己忘記放在哪兒了。今年夏天,他又透露說自己目前持有0.25個比特幣。
  • 船新 IDEA 2020.3 插件大合集,個個都是精品!
    老五跟艿艿說,自從他使用了 JRebel 插件,一天只啟動一次項目,後面都靠 JRbel 熱加載。牛逼!!!效果如下圖所示:演示效果更多關於該插件的內容,可以後面閱讀如下的文章:《說實話,DataGrip 真得牛逼,只是你不會用而已~》
  • 最愛「撒幣」的那個男人教你用HD錢包
    上面是說給技術人員聽的...通俗來講你往公鹿錢包導入一套HD錢包的助記詞(12個英文單詞或者12個漢字),程序就可以通過一些特定的算法推導出你的比特幣,以太坊,EOS等多條公鏈的私鑰,也就是說你只要記住12英文單詞的助記詞就等於同時記住了比特幣,以太坊,EOS等等的私鑰。幣小寶:好的,感謝喬總。
  • 世界首富馬斯克喊單比特幣, 1小時爆拉5000刀,狗狗幣爆漲10倍,到底發生了什麼?
    這條推文獲得了很多幣圈人士的點讚和留言,推文發布後,狗狗幣繼續大漲。此外,特斯拉創始人馬斯克也在推波助瀾。今天上午6:47,馬斯克一直自封為狗狗幣創始人。於是現在大家都在猜測:誰是下一個狗狗幣?答案眾說紛紜。答案揭曉:比特幣!
  • 看了馬斯克對雷軍說的一句話,我終於明白了馬斯克的成功原因
    當年馬斯克對雷軍說的一番話,至今仍讓雷軍敬佩不已,也間接透露了馬斯克獲得巨大成就的根本原因!2014年,雷軍前往矽谷拜訪了自己的偶像馬斯克。當時雷軍問他,10年前你決定做特斯拉時,電動車還沒有這麼火,你怎麼看到這個機會的?
  • 瘋狂的狗狗幣
    繼比特幣接連漲破歷史紀錄後,最近又一虛擬貨幣狗狗幣成功「出圈」,引起市場關注。
  • 《文案摸魚指南》:打工人必看!
    打工人一定要擺正自己的位置,因為你無論怎樣努力打工也不可能賺到很多錢的,最多讓老闆賺到很多錢,所以只有學會合理摸魚,才是一名合格的打工人。因為文案這個工種,不看工作時長,只看工作結果,工作完成了,甲方過稿了,才有機會摸魚,不然就是「白天摸魚一時爽,晚上加班火葬場」。熟練掌握文案的摸魚技巧,在摸魚間隙把工作完成的棒棒的,從而留下更多的時間摸魚,把可持續摸魚的事業進行到底。
  • 狗狗幣最高暴漲10倍!馬斯克發起投票,130萬人裡有70%跟著「瘋」
    特斯拉CEO馬斯克也扮演了「火上澆油」的角色,他發布了一條有關狗狗幣的推文後,狗狗幣價格在幾分鐘內上漲了25%,在一小時內飆升了50%以上。在這周,狗狗幣價格已狂漲500%,盤中最高漲幅達1000%!特斯拉CEO馬斯克在社交網絡發起投票:「你希望用什麼做地球未來的貨幣」,已經有超128萬人參與投票。其中71%的網友選擇用狗狗幣做未來的貨幣,29%的人選擇了其他貨幣。
  • 新晉全球首富擁抱幣圈 馬斯克:接受比特幣作為薪酬
    來源:中新經緯APP原標題:新晉全球首富擁抱幣圈!馬斯克:接受比特幣作為薪酬中新經緯客戶端1月11日電 1月10日,在回應《比特幣億萬富翁》一書作者本·梅茲裡奇的推特時,特斯拉CEO埃隆馬斯克表示,他不會拒絕接受比特幣支付。
  • 牛逼了:Pi幣高級認知3年後10000美金!高級認知價格超乎你的想像!
    請第一時間點擊上方關注「圓周率派」公眾號,關注「圓周率派」讓您的π幣資產如圓周率一樣永無止境!
  • 要不是這些沙雕插件,我早就被公司開除了
    正所謂,日防夜防,窺屏怪最難防;天靈地靈,你 Boss 終降臨。為了降低差友們因為工作高壓猝死的機率,同時避免上述監介的場景頻繁發生,小辣椒今天就來跟大家介紹幾個我壓箱底的神級摸魚程序。包你可以分分鐘掌握科學摸魚的正確方法,給自己營造一個愉快輕鬆的工作氛圍。偷偷看小說,Thief-Book第一個要介紹的,就是這款名為 「 小偷之書 」的軟體。
  • 狗狗幣火了,推文又助漲7%,比特幣飆至5.7萬美元!馬斯克已建倉?呼籲"大股東"拋售是為何?
    因特斯拉CEO馬斯克的發言或暗示買入狗狗幣,狗狗幣又開始大漲。2月20日早晨,馬斯克將推特頭像更換為懷抱比特幣符號的動漫人物,並且連發兩條推文稱,「只一天」「我只想點燃你心中的火焰」。下午3時左右,馬斯克再次發推文表示,比特幣和以太坊似乎「(價格)很高」。2月20日,狗狗幣曾一度漲超7%,截至2月20日晚間22時。
  • 狗狗幣(DogeCoin)背後的故事
    -前言-本周四,特斯拉和SpaceX的CEO埃隆·馬斯克(Elon Musk)在Twitter發了一隻狗的雜誌封面這樣的表情包在全球擁有大量粉絲,細心的你可能也發現,連微信裡也有柴犬表情。Palmer,當時是一位市場人員,他開玩笑說要將Doge和數字貨幣結合起來,嘲諷一下當時各種各樣怪誕的數字貨幣衍生品,他買下了dogecoin.com這個域名並招募感興趣的開發者一起推進這個想法。
  • LOL最牛逼插件誕生,一鍵記錄技能CD,玩家:可以和Doinb做隊友了
    LOL最牛逼插件誕生,一鍵記錄技能CD,玩家:可以和Doinb做隊友了英雄聯盟玩家都知道,在英雄聯盟這款遊戲中你可以看到隊友的召喚師技能CD時間以及大招時間但是對手的技能CD卻無法得知。第一是因為你很難在對線的時候輸入對方的CD信息,第二就是很多玩家最多記住一個對手的CD,面對兩三個C位玩家們記起來容易搞混。但是Doinb處理這些事情的時候卻十分熟練,發CD信息、對線兩不誤,也正是因為這樣的本領讓他在Rank或者比賽中更加得到隊友的信任。然而就在最近,一名大神研究出來了一款聯盟插件。
  • 不好意思,我不是針對你,我說的是在座的各位都是垃圾!
    所以我說:不好意思,我說的是在座的各位都是垃圾!為什麼?且聽我慢慢分解首先,既然是內容平臺,為什麼生產的內容這麼單一?同質化的內容特別多,基本上都是數字貨幣,區塊鏈相關的內容,偶爾有點吃瓜的內容,吃的也都是幣圈的瓜!這樣的內容平臺,能夠對用戶產生多大的吸引力?
  • 世界首富馬斯克+中國首富發行火星幣盤子,你敢做嗎??
    )(歡迎掃碼關注本公眾號,了解更多項目資訊)世界首富馬斯克,這些天是幣圈的風雲人物。他宣布花15億美元(約100億元人民幣)買比特幣,導致比特幣大漲。 他發一個推特,說看好狗狗幣,狗狗幣就應聲大漲;又一個推特,說狗狗幣太集中了,然後狗狗幣就應聲大跌。
  • 說出來你可能不信|機器人|neuralink|埃隆馬斯克|超能查派...
    「馬斯克表示,Neuralink設備可以召喚特斯拉,可以打遊戲,可以上傳記憶存儲,也可以下載到新的軀體或機器人上。」嘶~也就是說,這項技術不但能讓人類實現永生,可以不用學習,還可以通過意識直接和自己的智能設備相連,簡單來說,你只要想讓特斯拉汽車開到門口,它就可以過來。
  • 視頻實時翻譯插件,神器說帶你另類玩轉「Chrome插件」
    回到今天的正題,神器說要介紹一款翻譯插件,來實現這種神奇的效果,這個插件名字叫做「彩雲小譯」,在你登錄帳戶後(不登錄帳戶無法視頻翻譯),啟動彩雲小譯功能(開啟方法但是神器說光推薦個插件就完了嗎?呵呵,這個插件還可以用來翻譯本地無字幕的視頻,你只需要把視頻文件拖入到Chrome瀏覽器中。(常見的mp4視頻格式拖入到Chrome瀏覽器中,可以充當播放器來使用)。