手機頁面移動端,需求是文字向左無縫滾動marquee特效,用了幾個都不行,達不到需求效果,有小bug,最后用了下面的這個原生純js文字向左無縫滾動marquee特效,我測試了沒有問題,可以正常使用它,原生純js代碼少,實用性強,具體看下代碼。
1.先看效果演示:
2.原生純js代碼如下:
var speed=10; //數字越大文字滾動速度越慢
var tab=document.getElementById("demo");
var tab1=document.getElementById("demo1");
var tab2=document.getElementById("demo2");
tab2.innerHTML=tab1.innerHTML;
function Marquee(){
if(tab2.offsetWidth-tab.scrollLeft<=0)
tab.scrollLeft-=tab1.offsetWidth
else{
tab.scrollLeft++;
}
}
var MyMar=setInterval(Marquee,speed);
tab.onmouseover=function() {clearInterval(MyMar)};
tab.onmouseout=function() {MyMar=setInterval(Marquee,speed)};
var onOff = true;
var Time = setInterval(Chang,3000);
function Chang(){
if(onOff){
oFig.style.marginLeft='-100%';
onOff = false;
}else{
oFig.style.marginLeft='0';
onOff = true;
}
}
3.完整版代碼地址:
http://tangjiusheng.com/js/20180526.html
除注明外的文章,均為來源:湯久生博客,轉載請保留本文地址!
vim基本操作
移動光標
下面操作均需處在一般模式(默認的模式)下:
復制剪切粘貼
v模式相關
撤銷、重做
以下僅討論vim下的操作(vi的操作稍有不同):
進入編輯模式
下面所有操作均需在一般模式下執行:
查找和替換字符串
下面所有操作均需在一般模式下執行:
行號相關
保存及退出
vim插件
下載Vundle
$ git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim
配置插件
$ vim ~/.vimrc set nocompatible " be iMproved, required filetype off " required set rtp+=~/.vim/bundle/Vundle.vim call vundle#begin() Plugin 'VundleVim/Vundle.vim' Plugin 'tpope/vim-fugitive' Plugin 'git://git.wincent.com/command-t.git' Plugin 'file:///home/gmarik/path/to/plugin' Plugin 'rstacruz/sparkup', {'rtp': 'vim/'} call vundle#end() " required filetype plugin indent on " required
安裝插件
復制
$ vim :PluginInstall
或者
復制
$ vim +PluginInstall +qall
然后會出現如下圖一樣的界面
然后慢慢等!慢慢等!慢慢等!這里敲黑板,畫圈圈記起來,筆者當年就是進入這個界面一臉懵逼發現不會動就Ctrl+C了,然后就以為自己配置失敗了 o_O。
仔細看,最左邊正在安裝的有個>符號,新增的插件有個+符號,左下角的英文也是已經相當明白了!
一鍵安裝?
沒錯,我知道你懶,所以這里提供了一鍵安裝,移步這里一鍵安裝
$ git clone https://github.com/yiranzai/oh-my-zsh.git ~/.oh-my-zsh
$ cd ~/.oh-my-zsh $ ./install.sh -----------------------------warning------------------------- | The installation is successful, please execute | | source ~/.zshrc | -------------------------------end---------------------------
該腳本會安裝vim,配置zshrc/vimrc
這里貼出我的配置
作 Parul Pandey
郭一璞 編譯
量子位 出品 | 公眾號 QbitAI
作為一個超好用的交互式筆記本,Jupyter總是深受開發者的喜愛。
不過,除了基礎的寫文檔之外,其實Jupyter還有N多功能,簡直是一個集視頻、圖片、PPT、多種交互于一身的萬花筒。
如果不會用,你可能錯過了Jupyter 99%的功能。
Medium上走向數據科學(Towards Data Science)專欄的作者Parul Pandey就總結了七大Jupyter的進階用法,量子位編譯如下~
Shell是一種與計算機進行文本交互的方式。
一般來講,當你正在使用Python編譯器,需要用到命令行工具的時候,要在shell和IDLE之間進行切換。
但是,如果你用的是Jupyter,就完全不用這么麻煩了,你可以直接在命令之前放一個“!”,就能執行shell命令,完全不用切換來切換去,就能在IPython里執行任何命令行。
1In [1]: !ls 2example.jpeg list tmp 3In [2]: !pwd 4/home/Parul/Desktop/Hello World Folder' 5In [3]: !echo "Hello World" 6Hello World 7
我們甚至可以將值傳遞給shell,像下面這樣:
1In [4]: files= !ls 2In [5]: print(files) 3['example.jpeg', 'list', 'tmp'] 4In [6]: directory = !pwd 5In [7]: print(directory) 6['/Users/Parul/Desktop/Hello World Folder'] 7In [8]: type(directory) 8IPython.utils.text.SList
注意,返回結果的數據類型不是列表。
使用Jupyter主題,不僅能讓你的Jupyter界面更好看、更舒服,還能讓屏幕上的代碼看起來更顯眼。
比如Chesterish主題:
solarizedl主題:
來看一下具體的操作方法:
第一步,安裝:
1pip install jupyterthemes
第二步,加載可用主題列表:
1jt -l
第三步,選擇你想要的主題:
1# selecting a particular theme 2jt -t <name of the theme> 3# reverting to original Theme 4jt -r
現在可用的主題有:
chesterish
grade3
gruvboxd
gruvboxl monokai
oceans16
onedork
solarizedd
solarizedl
把名字填進去就好啦。
不過,每次換主題的時候都要重新加載Jupyter,才能看到主題變化。
另外我們上面講的在命令之前加“!”也一樣可用。
筆記本擴展(nbextensions)是一種JavaScript模塊,可以加載到筆記本前端頁面上,可以大大提升用戶體驗。
比如下面這些擴展工具,簡直能讓效率提升10000倍。
Hinterland
Hinterland功能可以讓你每敲完一個鍵,就出現下拉菜單,可以直接選中你需要的詞匯。
Snippets
Snippets在工具欄里加了一個下拉菜單,可以非常方便的直接插入代碼段,完全不用手動敲。
拆分單元格
拆分筆記本中的單元格,改成相鄰的模式,看起來就像分了兩欄。
目錄
這個功能可以自動找到所有的標題,生成目錄。
并且這個目錄還是移動的呦,你可以放在側邊欄,也可以拖動到任何你喜歡的地方懸浮起來。
折疊一個標題下的全部內容
如果你的代碼太長,覺得滾動過去太麻煩,可以直接折疊掉。
Autopep8
一鍵美化代碼,強迫癥的福音。
安裝方法
最后看一下怎么裝,需要用到conda:
1conda install -c conda-forge jupyter_nbextensions_configurator
或者用pip:
1pip install jupyter_contrib_nbextensions && jupyter contrib nbextension install 2#incase you get permission errors on MacOS, 3pip install jupyter_contrib_nbextensions && jupyter contrib nbextension install --user
然后把Jupyter打開,你就可以看到NBextensions這個選項卡了。
找不到的話就去菜單的Edit里面找。
搞定。
還有一些Jupyter小工具,比如滑塊、文本框之類的部分,可以做一些方便的交互。
滑塊
1def f(x): 2 return x 3# Generate a slider 4interact(f, x=10,);
布爾值生成復選框
1# Booleans generate check-boxes 2interact(f, x=True);
字符串生成文本區域
1# Strings generate text areas 2interact(f, x='Hi there!');
播放器
1play = widgets.Play( 2 # interval=10, 3 value=50, 4 min=0, 5 max=100, 6 step=1, 7 description="Press play", 8 disabled=False 9) 10slider = widgets.IntSlider() 11widgets.jslink((play, 'value'), (slider, 'value')) 12widgets.HBox([play, slider])
日歷
1widgets.DatePicker( 2 description='Pick a Date', 3 disabled=False 4)
不過這個部件只能咋Chrome和Edge里用,Firefox和Safari不支持。
調色盤
1widgets.ColorPicker(
2 concise=False,
3 description='Pick a color',
4 value='blue',
5 disabled=False
6)
標簽
1tab_contents = ['P0', 'P1', 'P2', 'P3', 'P4'] 2children = [widgets.Text(description=name) for name in tab_contents] 3tab = widgets.Tab() 4tab.children = children 5for i in range(len(children)): 6 tab.set_title(i, str(i)) 7tab
其他的小部件,可以在文末的傳送門跳轉到GitHub尋找。
安裝方法
1# pip 2pip install ipywidgets 3jupyter nbextension enable --py widgetsnbextension 4# Conda 5conda install -c conda-forge ipywidgets 6#Installing ipywidgets with conda automatically enables the extension
使用“interact”功能自動創建UI控件,這是使用IPython最方便的方法。
1# Start with some imports! 2from ipywidgets import interact 3import ipywidgets as widgets
Qgrid也是一個Jupyter的小部件,不過它主要用于數據幀,裝上之后,就可以像操作Excel里的篩選功能一樣,方便的處理數據。
安裝方法
用pip安裝:
1pip install qgrid 2jupyter nbextension enable --py --sys-prefix qgrid 3# only required if you have not enabled the ipywidgets nbextension yet 4jupyter nbextension enable --py --sys-prefix widgetsnbextension
用conda安裝:
1# only required if you have not added conda-forge to your channels yet 2conda config --add channels conda-forge 3conda install qgrid
人在江湖飄,難免遇到要做PPT的時候。
但是,如果你的內容都已經放在Jupyter里了,再重新導入PPT,太麻煩了,我們自動轉換吧。
一種方法是用Jupyter內置的PPT選項,依次點擊菜單欄里的View → Cell Toolbar → Slideshow,之后每個單元格上面都會有一個灰色的橫條,選Sub-Slide。
然后輸入以下代碼:
1jupyter nbconvert *.ipynb --to slides --post serve 2# insert your notebook name instead of *.ipynb
好了,現在就變成PPT樣式的了,顯示在端口8000,你也可以查看源代碼找到PPT文件。
你也可以提前換好主題,比如onedork主題,然后再轉換成PPT的的時候就是同一個主題風格的PPT了。
不過,用PyTorch默認方法生成的PPT代碼不能編輯,這個時候就要用到RISE插件了。
RISE用到reveal.js來運行PPT,可以不退出PPT,直接運行代碼。
先來安裝RISE,推薦用conda:
1conda install -c damianavila82 rise
其實不太推薦pip:
1pip install RISE
然后調用JS和CSS:
1jupyter-nbextension install rise --py --sys-prefix 2#enable the nbextension: 3jupyter-nbextension enable rise --py --sys-prefix
安裝好啦,現在重新打開你的Jupyter Notebook,發現一個新的擴展,名叫“Enter/Exit RISE Slideshow”。
戳一下,一個可以邊演示邊改的PPT就好了。
扔鏈接再跳轉實在是太麻煩了,不如直接把素材放進Jupyter里面。
嵌入鏈接
1#Note that http urls will not be displayed. Only https are allowed inside the Iframe 2from IPython.display import IFrame 3IFrame('https://en.wikipedia.org/wiki/HTTPS', width=800, height=450)
操作方式如下,當然你需要把鏈接換成你要放的鏈接:
嵌入pdf
1from IPython.display import IFrame 2IFrame('https://arxiv.org/pdf/1406.2661.pdf', width=800, height=450)
同樣,把pdf鏈接換成你需要用的pdf。
原文:Bringing the best out of Jupyter Notebooks for Data Science
Parul Pandey, Towards Data Science
https://towardsdatascience.com/bringing-the-best-out-of-jupyter-notebooks-for-data-science-f0871519ca29
Jupyter主題
https://github.com/dunovank/jupyter-themes
IPython小部件
https://github.com/jupyter-widgets/ipywidgets
— 完 —
誠摯招聘
量子位正在招募編輯/記者,工作地點在北京中關村。期待有才氣、有熱情的同學加入我們!相關細節,請在量子位公眾號(QbitAI)對話界面,回復“招聘”兩個字。
量子位 QbitAI · 頭條號簽約作者
?'?' ? 追蹤AI技術和產品新動態
*請認真填寫需求信息,我們會在24小時內與您取得聯系。