參考網址:RENE.E
目錄
三、單級單元(Single Level Cell,簡稱SLC)
四、多級單元(Multi Level Cell,簡稱MLC)
五、三級單元(Triple Level Cell,簡稱TLC)
六、四級單元(Quad-level cells,簡稱QLC)
關於擦寫次數
https://www.mobile01.com/topicdetail.php?f=490&t=4765000&p=1
用file_exists()查詢檔案是否存在時必需有該檔的執行權限才能正確查詢。
如要用網頁查詢mysql的檔案是否存在,至少必需開放–x的權限
例如mysql中有個資料庫d610026,必需把這個資料夾的執行權限打開
chmod 751 d610026
經試驗d610026資料夾內的檔案即使是640也可以正常查詢。
參考網址:
http://phpqrcode.sourceforge.net/
<?php include "phpqrcode/qrlib.php"; // 引用 PHP QR code //$_REQUEST['level'] //L、M、Q、H,Error Correction Level,錯誤修正能力 //$_REQUEST['size'] //1~10 //$_REQUEST['data'] //要編成 QR code 的資料 $errorCorrectionLevel = 'L'; if (isset($_REQUEST['level']) && in_array($_REQUEST['level'], array('L', 'M', 'Q', 'H'))) { $errorCorrectionLevel = $_REQUEST['level']; } $matrixPointSize = 4; if (isset($_REQUEST['size'])) { $matrixPointSize = min(max((int) $_REQUEST['size'], 1), 10); } if (isset($_REQUEST['data'])) { if (trim($_REQUEST['data']) == '') { die('沒有資料'); } QRcode::png($_REQUEST['data'], false, $errorCorrectionLevel, $matrixPointSize, 2); }
<img src="test.php?level=L&size=4&data=abc"/>
版面配置>工具列>主要(打勾)
版面配置>版面配置>多視窗
版面配置>主題>Slate
進階>設定>編輯器>換列/跳格設定 4
進階>設定>檔案處理>備份>不備份
進階>設定>應用程式配置>檔案標籤>操作>類型>多列
進階>配置>設定自動載入巨集>巨集檔案名稱 填入 E:\as\文書工具\ultraedit\fu.mac
alt-f
InsertMode ColumnModeOff HexOff Key Ctrl+HOME "<?" Key Ctrl+END "?>" Key Ctrl+HOME UltraEditReOn Find RegExp "#function" Replace All "function" UltraEditReOn Find "#}" Replace All "} "
alt-u
InsertMode ColumnModeOff HexOff UltraEditReOn Key Ctrl+HOME Find RegExp "%function" Replace All "#function" UltraEditReOn Find RegExp "%}" Replace All "#}" Key Ctrl+HOME Key DEL Key DEL Key Ctrl+END Key BACKSPACE Key BACKSPACE Key Ctrl+HOME
檢視-字型-設定顯示字型 consolas 13
參考網址:VECTOR COOL 威得數位行銷
iconv("big5", "UTF-8", $str);
big5有很多字是沒有收錄的:
綫、綉、滙、栢、峯、頴、邨、着、双
iconv這個函數他遇到轉不出來的字,就停住了,可能會造成輸出文件中斷,導致文件結構錯誤。
請改用 mb_convert_encoding ,別高興太早 big5 沒有的字依然不會出來,只是不會因為遇到 big5 不認識的字就卡住,雖然輸出的速度好像會比iconv慢,不過順利解決問題。
$string = "轉碼測試功蓋銹abc轉碼測試"; $result = mb_convert_encoding($string,"utf-8","big5"); echo $result;
mb_convert_encoding( $str, $encoding1,$encoding2 ); $str,要轉換編碼文字 $encoding1,目標編碼,如utf-8,big5,大小寫均可 $encoding2,原始編碼,如UTF-8,BIG5,大小寫均可 mb_convert_encoding($str, "UTF-8"); //編碼轉換為utf-8 mb_convert_encoding($str, "UTF-8", "BIG5"); //原始編碼為BIG5轉UTF-8 mb_convert_encoding($str, "UTF-8", "auto"); //原始編碼不明,通過auto自動檢測,轉換UTF-8
參考網址:簡書
2019/02/06更新
https://github.com/ZKingQ/scratch-player
可以下載可播放sb3的程式
scratch 3.0 已於2019/1/2釋出
一直在找瀏覽器可以播放.sb3的方法
想不到朝敏已經找到了prolin
基于Github上的scratch-render实现sb2或者sb3文件可以用h5的canvas直接播放而不是flash
关于scratch-render,scratch-gui,scratch-vm等组件的关系可以查看这篇教程Getting Started,然后发现与Scratch文件相关的播放部分是由scratch-render控制。
Scratch 3.0
git clone https://github.com/LLK/scratch-render.git
cd scratch-render
npm install # 使用cnpm可能会安装失败
下载龟速的话可以科学上网然后使用Proxifier全局代理
其实Scratch开发团队已经实现了这个功能,只是我们要找到接口来调用。打开目录下的/test/integration/index.html可以打开这个播放器Demo网页。此时上传sb文件会发现只能显示代码初始状态的效果,这时需要添加一行代码,添加vm.greenflag()给js执行,就可以实现播放的效果了。
这个网页的代码如下:
<body> <script src="../../node_modules/scratch-vm/dist/web/scratch-vm.js"></script> <script src="../../node_modules/scratch-storage/dist/web/scratch-storage.js"></script> <script src="../../node_modules/scratch-svg-renderer/dist/web/scratch-svg-renderer.js"></script> <!-- note: this uses the BUILT version of scratch-render! make sure to npm run build --> <script src="../../dist/web/scratch-render.js"></script> <canvas id="test" width="480" height="360" style="width: 480px"></canvas> <input type="file" id="file" name="file"> <script> // These variables are going to be available in the "window global" intentionally. // Allows you easy access to debug with `vm.greenFlag()` etc. window.devicePixelRatio = 1; var canvas = document.getElementById('test'); var render = new ScratchRender(canvas); var vm = new VirtualMachine(); var storage = new ScratchStorage(); var mockMouse = data => vm.runtime.postIOData('mouse', { canvasWidth: canvas.width, canvasHeight: canvas.height, ...data, }); vm.attachStorage(storage); vm.attachRenderer(render); vm.attachV2SVGAdapter(new ScratchSVGRenderer.SVGRenderer()); vm.attachV2BitmapAdapter(new ScratchSVGRenderer.BitmapAdapter()); document.getElementById('file').addEventListener('click', e => { document.body.removeChild(document.getElementById('loaded')); }); document.getElementById('file').addEventListener('change', e => { const reader = new FileReader(); const thisFileInput = e.target; reader.onload = () => { vm.start(); vm.loadProject(reader.result) .then(() => { // we add a `#loaded` div to our document, the integration suite // waits for that element to show up to assume the vm is ready // to play! const div = document.createElement('div'); div.id='loaded'; document.body.appendChild(div); // ------------------------------ // vm.greenflag(); // 这里添加这条语句 // ------------------------------ // }); }; reader.readAsArrayBuffer(thisFileInput.files[0]); }); </script> </body>
现在打开之后随便扔一个sb文件进去就会自动播放了
scratch播放器
然后你就可以根据这个网页的逻辑进行改编,进一步定制实现自己的播放器界面了,比如像网易卡达这样子
作者:章开晴 链接:https://www.jianshu.com/p/1bbe539d5b87 來源:简书 简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。
參考網址:志文工作室
php中的strpos函数定义说明如下:
int strpos ( string $haystack , mixed $needle [, int $offset = 0 ] )
返回 needle 在 haystack 中首次出现的数字位置,以整型返回位置信息。如果没找到 needle, strpos() 将返回布尔型的 FALSE 值。
存在问题:
如果$needle出现在$haystack头部,则返回值为0。在不严格的判断中,0 = false,这样就无法区分是否找到。
解决方法:
使用符号“===”而不是“==”进行判断。
判断符号 “==”会转换类型再进行比较,而更严格的符号“===”会先判断类型是否相同,然后才进行比较。
如下举例:
//判断字符串是否存在的函数 function strexists($haystack, $needle) { return !(strpos($haystack, $needle) === FALSE);//注意这里的"===" }
參考網址: iT邦幫忙
C:\Windows\System32\drivers\etc\hosts
linux 放在 /etc/hosts
簡而言之,就是要查詢一個主機名稱時,
如果這個檔案沒定義的話,
就會去查DNS。
例如,若該檔案的內容有:
1.2.3.4 ithelp.ithome.com.tw
那麼您要連ithelp.ithome.com.tw時,
不會去向 DNS 查真正的 IP 是什麼,
而馬上往 1.2.3.4 來送。
如果有一些常要連的目標,
若 DNS 常會有問題,或者很清楚其 IP ,
也可以手動去加上 IP 及其對應名稱;
或者若 DNS 還沒有設好,
而主機上有好幾個虛擬主機的話,
且是用 virtual name 來對應的話,
也可以利用 hosts 的功能,
這樣在這台電腦上 query 該名稱,
雖 DNS 還沒有該記錄,但您電腦就可 query 到正確的 IP 所在,
而虛擬主機也可以由被 query 的hostname來做出回應;
這是 hosts 可以的正向作法。
寫程式時常會用到localhost
懶得打那麼多字,就在hosts檔中加入
127.0.0.1 lo
修改完後記得重新啟動網路
那麼只要在網址列輸入lo就可以連到localhost了
ultraedit
licensing.ultraedit.com
licensing2.ultraedit.com
參考網址:
MySQL 查询带有回车换行符的内容
MySQL查询带有回车换行符内容的方法:
select * from table where content like '%\r\n%';//或者 \n
108.11.16更新 新版的mysql換行符號只剩'\n' 所以下命令變成 SELECT * FROM `player` WHERE `player_name` like '%\n%' php語法 str_replace(array("\r", "\n", "\r\n", "\n\r"), '', $str);
參考網址:標準之旅
參考網址:淺談mysql資料庫中的換行符與textarea中的換行符
解决方法:
UPDATE tablename SET field = REPLACE(REPLACE(field, CHAR(10), ''), CHAR(13), '');
UPDATE player SET player_engname = REPLACE(REPLACE(player_engname, CHAR(10), ''), CHAR(13), '') where player_id = 8
char(10): 换行符
char(13): 回车符
MySQL的trim函数没办法去掉回车和换行,只能去掉多余的空格,可以用MySQL的replace函数。
========================================
以下查詢不適用在mysql
參考網址:逍遙齋
SQL 查詢 換行符號
where id like '%'+char(10)+'%'
CHAR 可用於將控制字符插入字符串中。下表顯示了一些常用的控制字符。
控制鍵 值
Tab: CHAR(9)
換行: CHAR(10)
ENTER: CHAR(13)
Ex:
SELECT * FROM TABLE_NAME
WHERE 1=1 AND COLUMN_NAME LIKE '%'+CHAR(13)+'%'
update base_mapping set basename = replace(basename,Char(10),'')
update base_mapping set basename = replace(basename,Char(13),'')