Jump to...
redirecting...

Log for OwO

/c@mmis_js_bot
#include "stdafx.h"
#include <iostream>
using namespace std;

int main()
{
int n, i;
cin >> n;
i = 2;
while( n > 1 )
{
while( n % i == 0 )
{
cout << i << " ";
n = n / i;
}
i = i + 1;
}
cout << endl;
system("pause");
return 0;
}
可以用統一的 coding style 嗎...
Ummmmm,什麼意思wwww
"", <>
[photo](media:AgADBQADuLExG5GL8geTaDvs-w3wLARQyjIABOxNhMEKzqJr_oQAAgI@telegram)
好的wwww
第一次弄C++(?
Bot更新了,只要你用對程式都支援傳現在聽的歌的名字
然後應該更順
抱歉qwq
*的兒子
[photo](media:AgADBQADP68xG2xJBgffjsFz-D9c8_BEyjIABNYLiUxseUC3HYYAAgI@telegram)
有人CENTOS7 YUM UPDATE 下去台灣教育網路的全死嗎???
#include "stdafx.h", <iostream>
這樣嗎?
我覺得你現在表達能力還是不好
他有進步啦
真的有
摁 有些進步
摁 至少有點啦
好吧 或許沒有
cheerio 在處理table上根本反人類
好的。
www
/math 120
http://www.y-shun.com.tw/
哇 又一家優質公司
超棒的
bug
N
@licson queue的上限,跟循環歌曲總數要分開嗎?
好像要
循環幾首,上限幾首?
然後是否要把數值寫在config?
對啊 放進去config
不過上限是二十首
循環多少就不確定
名稱用啥?
queue_size or queueSize ?
camelCase
realQueueLength > 20 ? "I'm quite busy
我猜這裡是 >= ?
不是
> 20 對的
因為 Queue 計算長度 會把目前跑的也算進去
所以Queue長度是 21 才是 20 首歌在排隊
不過你實作的Queue不一定是這樣
我是沒有處裡過的才算
不算正在執行以及舊的
如果我要寫一個事件,表示木前正在執行已經跑過的舊task,他應該叫什麼?
這個
叫做repeat好了
@licson
songList.splice(0, 1)
為啥不要
songList.shift()
就好?
[photo](media:AgADBQADyLExG5GL8gezJmQFR7hxRZtRyjIABKFECeHYIglf7oUAAgI@telegram)
啊 我不用他 .shift 傳回的東西(望
splice一樣會回傳splice掉的東西啊(望
好像也是
是說可以開一隻獨立的bot讓c9那邊beta嗎?
可以 我有key
那隻bot的名稱是??
直接 start index.js 就好
/queue 是不是應該包含正在撥的比較好?
我自己寫的時候是沒包括正在放的
ok
現在我放了兩首在loop
話說這bot的複雜度呈指數上升
現在還要內建Shoutcast伺服器
因為this self炸了(
老實說我覺得javascript的this,有時候真的很容易坑人
靈異事件出現了,一個訊息trigger了兩次指令
@licson token是對的嗎?為啥沒反應啊?
有差這麼多嗎www
@licson 你是不是把token放反了...為啥test反而到主站去了?
啊對啊 啊啊啊啊啊
嗯 現在好了
是說不考慮讓 /list 裡顯示出歌名嗎?
不然根本不知道是哪一首
然後,doBroadcast裡需要用一些方式去聽sigterm,不然整點報時一定要等歌播完才有辦法報
可能像是task中要 return function kill() {ffmpeg.kill(0); cb()}之類的
不然queue只能乖乖等task完在下一個
請用送q的stdin的方法關掉ffmpeg
我比較喜歡 SIGINT
唉不對
這樣送ffmpeg吃的到嗎
q.push(function (cb) {
var ffmpeg = spawn.....
return function kill() {
ffmpeg.kill('SIGINT');
}
})
我的想法拉
直接sigterm就好
只是要暴露他出來
[photo](media:AgADBQADRLIxG-nPYgisw2LfYCAscTBKyjIABL2GmCL65Xcc7ocAAgI@telegram)
又不是每一首歌都有歌名
搜尋 Convoluted Integration
沒找到,倒是找到了一堆數學算式
啊不是convoluted
這個符號意思是在一個複數域裏面進行積分
啊 contour integration
不是 convolution,那是另一回事
@licson 你的node有weakMap嗎?
我是 node.js v6
應該有?
然後,task需要哪些handle?
stop就好?
暫時是stop
應該要
return function (action) {}
還是
return {action: function () {}}
我比較喜歡前者?
Queue::skip
還是
Queue::stop
還是both?
skip?
因為不是真的整條queue停止
Queue.prototype.signal = function signal(data) {
  if ('function' === typeof this.taskHandle) {
    this.taskHandle(data)
  }
}
叫signal好了
然後收到訊號要幹嘛, 讓task自己決定
啊好
是說收到sigterm的話,ffmpeg會把一個完整的frame送完再停?
還是直接咖?
mp3格式對於有問題的frame。容忍程度到底多高?
應該會送完
非常高
更何況被kill掉的ffmpeg是輸出PCM的
目前的signal只有'stop'而已沒錯吧?
Queue.helpers = {
  mergeTask: function(a, b) {
    return function merged(cb) {
      var handle, stopped = false;
      handle = a(function (err, data) {
        if (err) {
          return cb(err);
        }
        if (stopped) {
          cb(data);
        }
        handle = b(function (err, data2) {
          if (err) {
            return cb(err);
          }
          cb(null, [data, data2])
        })
      })
      return function wrapHandle(data) {
        if (data === 'stop') {
          stopped = true;
        }
        handle(data)
      }
    }
  }
}
function 滿天飛
好function喔
除非我想到辦法令ffmpeg暫停
跟你說整個bot都在用各種function(
這隻bot就只有Queue一個class阿(
可是我也覺得自己從頭打造一個Shoutcast伺服器出來也算是這樣了
或許遲一點加入別的格式支援 e.g. OGG
又或是 AAC
話說有人看到Streaming Title嘛
或許網頁版也要有個方式去讀streaming title出來
啊對 有一個小問題 Telegram 拿回來的連結都有時間限制
可是Queue現在會無限Loop所以那些Link有機會過期
把拿link的地方,改成在task裡就好了?
反正碰到error時,Queue會自動清掉,所以不用怕會出事
long polling(
SSE
`u222e
謝謝大大好人一生平安
這種單向而且間格又大的的,long polling比較省事吧?
反正就是把socket通通扔進個array,要送訊息時在end就好
也是
不過我還是會用到 EventSource
他做Long Polling也是很方便
只是要用SSE的格式傳資料
SSE的格式,我記得是很簡單的純文字?
event:
data:
[sticker](media:AAQFABOcGL4yAAQ2cTLfYTur568SAAIC@telegram)
不只
還有 retry:
還有個 id 來著
其他忘了
看一下就全部記憶回來了
不過用PHP寫這裏要長時間連線的東西真的很多東西要顧
不然當時都不會寫一個函式庫出來
[sticker](media:AAQFABOaab4yAARw5hqISDK3QnUKAAIC@telegram)
什么是 SSE ?
- Server-Sent Events (this context)
-Streaming SIMD Extension (not in this context)
别告诉我是处理器指令集那个
😧
好像是其中一個被遺忘的HTML5 API
这不就是 polling 吗?
by time interval 的
他是stream
long polling每次都要開新連線
但用法上倒是真的看不出差別
wwww
順便推一下我的東西
SSE 有些缺陷
像是最大連線數
其實可以很高
我指的是客戶端這邊的問題
你這樣說WebSocket不也有同樣的問題(
long polling也有一樣問題啊
而且重複開連線還會更耗資源
Long Polling 會斷
SSE 不會
[sticker](media:AAQFABNDkb8yAATaLsE9OJaHK28pAAIC@telegram)
斷了還會重複連,更慘好嗎
SSE可以選擇性斷
只是不像Long Polling每接收一次信息就斷
SSE 斷了不就 Long Polling
[sticker](media:AAQFABOcGL4yAAQ2cTLfYTur568SAAIC@telegram)
SSE 的地位真的有點奇怪
SSE可以選擇隔一個Timeout斷
sse不會斷啊,連線開一次就好,延遲也會因此變小
網上看這個匯市
SSE很適合傳那些資料
股票也是
我感覺我要搬一下Radiobot
long polling要先tcp三向握手,然後是tls連線,才能開始送資料耶
慘烈一點的網路,這些加起來高不不好能超過一秒
現在有個簡單的status check了
opus
opus vs. vorbis
libopus vs. libvorbis quality
新的serverㄛ
libmp3lame vs. libmadmp3 quality
opus勝
ffmpeg vs mpg123 (
opus 128k就可以和mp3 256k拼耶
新的server已經有啦
我還因為放棄 ffserver 導致稍微用多了一點RAM
話說剛剛Queue好像有問題 現在就好了
error?
不 他沒再執行下去
就是沒
loop
不過你已經修好了
現在也沒事了(
啊,好像有些bug,在最後一個task因為噴error被移除時會出事
shift 裡,不該假設items裡一定有東西