发布于:

1. 介于喜欢自用的产物

最近写文的次数高产似那啥?= =不提这个啦~

作为一个忠实的轮子制造者,我当然不介意在能够使用一些东西情况下在手动配置一份private版本的东西。

基于这个思路我大抵找到了一份全新的科学上网的方法。

Read on →
修改于:

1 起因

这次为什么会突然提起遗传算法呢?主要是因为这次光光的学姐询问了一个关于多旅行商的MTPS问题,对此我没有做过这方面的研究,我最多做过的是一个单旅行商的TPS问题,这样一个多旅行商的多目标求最优解的方法还从未接触过,不过作为一个忠实的研究者,并不介意挑战来的有难度一点。

Read on →
发布于:

本人最近需要copy一份文件,最为一个忠实的ubunut fans 我是不会把u盘化成ntfs的,原因很简单,说不定哪天就要用内核登陆,到时候我可不一定能成功挂在ntfs,但是fat32至少是可以使用,不过我的小伙伴可不会这么办,于是我的os x对他的盘只能看不能写了。

某IT工程师的发现

百度了一下已经有解决方案了,简单的使用命令就可以了,我们把它挂载就能读+写了。

1
2
3
diskutil info /Volumes/fatherd | grep UUID
#uuid 就是上面的那个uuid
echo "UUID=uuid none ntfs rw,auto,nobrowse" | sudo tee -a /etc/fstab

这个是第一种方法了假设你知道uuid(反正我是不信有人能背出的)可以省略第一步

第二种方法

这种方法是基于上面启发的,我们可以尝试挂载到别的地方

1
2
3
4
5
ls /dev | grep disk
ls /dev | grep disk
#老样子看两次
VOLUME=`diskutil info /dev/disk2s1 | grep "Volume Name" | awk '{print $3}'`
sudo mount -t ntfs -o noowners,nodev,nobrowse,noatime,rw /dev/disk2s1 /Users/iceprosurface/Desktop/${VOLUME}

挂载桌面同名文件上

发布于:

时隔半月,我又开始码字了,这次带来的是electron的使用方案,制作一个桌面播放器。

起因

说起音乐播放器,大抵我只想需要一个能放音乐的就好,说来也是有点奇怪,我一同学对现在的播放器横不满意为什么呢原因有三点

  1. 不能拖拽载入音乐(这个理应是一个简单好用的功能)
  2. 必须使用网络源歌词(完全能理解,商业公司总是要推销自己的ip的是吧?)
  3. 自定义的歌单永远都是从云端下载的,本地歌单只能分一个大类

那么这样就有了一个需求了不是么?

于是乎我决定,就此做一个音乐播放器来练手,当然一开始并不需要什么代码,所以在本章节不会有任何代码出现,我们需要先分析一下需要的东西。

Read on →
发布于:

初衷

最早只是觉得手工计算绩点比较麻烦,so用js写了一个绩点计算器,当然咯,之前是有人写过的不过现在我打算让其完成自动化的过程,首先了,不得不提提海大的学风系统了 它大量使用了iframe框架,虽然说作为一个站内站点,不需要做SEO但是讲道理,这里面js跨域的问题就觉得麻烦么? so,我把最初的js的版本放弃了。

当然,我不得不提一句,由于新学期开始了,so这个办法目前是不能获得分数的(因为页面就还没放上内容)

Read on →
发布于:

这次在做播放器时碰到了一个严重的问题,一开始打算做个标签页形式的歌单页,来回翻了一下metro UI CSS 发现居然里面的标签页不是可以左右切换的,这样可不太好

而且如果动态添加标签页数量一多就会变成一坨,so考虑了一下,我决定自己造一个轮子算啦。

因为代码很简单,这里就全部没有打注释了

演示地址

Read on →
发布于:

本例用于在lrc控制模块,在用于在timeupdate时间中同步更新lrc使用。

这里首先放置一个歌词解析模块,下面还需要做一个filter做歌词时间格式化模块

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
/**
* 歌词解析模块
*
* 重复类歌词将repeat至array
* @author icepro
* @Time 2016-3-16 17:46:11
*/
function lrcParser(lrc){
  // 正则表达式用于已匹配[00:00:00][00:00][00:00.00]
  var reg = /(\[\d{2}[:]\d{2}([.|:]\d{2}){0,1}\])+(.*)[\n|\r|\r\n]/g;
  var res = lrc.toString().match(reg);
  // 用来push入歌词
  var stack = new Array();
  if(res.length>0){
      $.each(res,function(i1,item1){
          // 获取时间
          var timeStmp = item1.toString().match(/\[\d{2}[:]\d{2}([.|:]\d{2}){0,1}\]/g);
          // 获取歌词,将时间和换行符去除
          var song = item1.toString().replace(/\[\d{2}[:]\d{2}([.|:]\d{2}){0,1}\]/g,"").replace(/[\n|\r|\r\n]/g,"");
          $.each(timeStmp,function(i2,item2){
              stack.push({"song":song,"time":item2});
          });
      });
  }
  // 依照时间排序
  return stack.sort(function compare(a,b){return a.time.localeCompare(b.time);});
}
Read on →
发布于:

这是一个关于media的播放器模块化控制,用于个人iceplayer播放器

花了一定的时间解决了之前碰到的关于播放器的问题,目前在开发一个html5播放器,基于bootstrap metro UI css 和angularjs,此模块是在angular控制器中用于控制音乐播放的模块,开头的方法列表并没完全写入所有的方法,在下面可以自己增加或删除,在这里面的lrc仅限读取和设置,lrc的实时播放将会被列入一个单独的模块。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
/**
* media控制器
* @author icepro
* @Time 2016-3-10 11:13:55
* @return setMedia              设置media元素
* @return playList              播放列表
* @return className             类名
* @return play                  播放
* @return pause                 暂停
* @return setSrc                设置文件路径
* @return getSrc                获得文件路径
* @return newMusic              依照url开始新音乐
* @return setMedia              设置media元素
* @return getMedia              获取media元素
* @return playNext              播放下一首
* @return setCurrentTime        设置当前播放时间
* @return getCurrentTime        获得当前播放时间
* @return getDuration           获得歌曲完整长度
* @return setLrc                设置当前歌词的lrc
*/
function mediaContol(){
  
  // 生成一个audio
  var media = new Audio();
  
  var indexOfList = 0,
      played = false,
      playing = false,
      playList = new Array(),
      className = "mediaControl",
      theNext = false,
      bt_play = true,
      duration=0,
      currentTime=0,
      lrc="";

  // 特殊情况下需要返回自己
  var getMediaContol = function(){
      return this;
  }
  
  // 获取media元素
  var getMedia = function (){
      return media;
  }
  
  // 播放
  var play = function(){
      if(this.playList.length==0){
          console.log("no music loaded");
          return false;
      }
      if((!media.paused)|(!played)|theNext){
          setSrc(this.playList[indexOfList]);
          theNext = !theNext;
      }
      // 设置当前播放状态
      playing = true;
      // 设置是否已经加载过src
      played = true;
      // 设置按钮为pause
      bt_play = false;
      media.play();
  }
  
  // 暂停
  var pause = function(){
      bt_play = true;
      media.pause();
  }
  
  // 获得当前播放按钮是否为play
  var getBt_play = function(){
      return bt_play;
  }
  
  // 获得是否为播放状态
  var isPlaying = function(){
      return playing;
  }
  
  // 设置歌曲完整长度
  var setDuration = function(){
      duration = media.duration == NaN ? 0 :media.duration;

  }
  
  // 获得歌曲完整长度
  var getDuration = function(){
      return duration;
  }
  
  // 获取当前时间
  var getCurrentTime = function(){
      return parseInt(media.currentTime);
  }
  
  // 设置当前时间
  var setCurrentTime = function(time){
      media.currentTime = time;
  }
  
  // 以百分比获取当前时间
  var getCurrentTimeByPercent = function(){
      return (Math.round(media.currentTime / media.duration * 10000) / 100.00 + "%");
  }
  
  // 停止
  var stop = function(){
      // 设置当前播放状态
      playing = false  ;    
      media.stop();
  }
  
  // 设置播放
  var setSrc = function(url){
      media.src=url;
  }
  
  // 获得播放
  var getSrc = function(){
      return media.src;
  }
  
  // 开始新曲目
  var newMusic = function(index){
      indexOfList= index > this.playList.length-1 ? 0 : index;
      theNext = true;
      this.play();
  }
  
  // 下一首
   var playNext =function(){
      if(this.playList.length!=0){
          indexOfList = (indexOfList == this.playList.length-1)?0:indexOfList + 1;
          theNext = true;
          this.play();
      }else{
          console.log("no music loaded");
      }
  }
  
  // 设置当前歌词的lrc
  var setLrc = function(lrcs){
      lrc = lrcs;
  }
  
  return {
      isPlaying:isPlaying,
      indexOfList:indexOfList,
      stop:stop,
      getBt_play:getBt_play,
      playList:playList,
      className:className,
      play:play,
      pause:pause,
      setSrc:setSrc,
      getSrc:getSrc,
      newMusic:newMusic,
      getMedia:getMedia,
      playNext:playNext,
      setCurrentTime:setCurrentTime,
      getCurrentTime:getCurrentTime,
      setDuration:setDuration,
      getDuration:getDuration,
      getCurrentTimeByPercent:getCurrentTimeByPercent,
      setLrc:setLrc,
  }
  
}