UltraEdit V23功能調校

版面配置>工具列>主要(打勾)

版面配置>版面配置>多視窗

版面配置>主題>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

胡萝卜周  http://www.carrotchou.blog/  

發表於 軟體使用 | 發表迴響

PHP big5轉utf8不要用iconv(),iconv這個函數,用mb_convert_encoding

參考網址:VECTOR COOL 威得數位行銷

不要以為big5轉utf8就用iconv()這麼簡單

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

 

發表於 程式設計 | 發表迴響

用canvas播放scratch文件

參考網址:簡書

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()函数的返回值false与0问题

參考網址:志文工作室

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);//注意这里的"==="
}

 

 

發表於 程式設計 | 發表迴響

hosts的運用

參考網址: 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

發表於 Linux系統, Windows系統, 軟體使用 | 發表迴響

[SQL]查詢及去除換行符號

參考網址:
MySQL 查询带有回车换行符的内容

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),'')

發表於 程式設計 | 發表迴響

複製百度文庫

參考網址:百度文库收费高?教你六招轻松免费下载

嗨文库是一款在线BD文库文档下载工具,目前有两个网址:http://www.hiwenku.com/ 和 http://47.95.226.123/wenku/。可以原格式下载百度文库文档的好网站。

發表於 軟體使用 | 發表迴響

[phpmyadmin] 登錄超時 (1440 秒未操作),請重新登錄

參考網址:精讚布落格

 

phpmyadmin是很好用的工具,但是出現登錄超時 (1440 秒未操作)這樣的問題,要一直重登滿煩的。請照下面修改:

一、修改 /etc/php.ini

設定系統逾時的秒數
session.gc_maxlifetime = 86400

重啟 apache 生效

二、修改 /path/to/phpmyadmin 設定檔

到你安裝phpmyadmin的目錄

理論上在 phpmyadmin的根目錄下應該有 config.inc.php 這個檔案,如果沒有的話,請將sample設定檔拿來用:

# cp config.sample.inc.php config.inc.php

修改config.inc.php

最上面加入一行,設定時間(秒數)即可

$cfg[‘LoginCookieValidity’] = 86400;

UBUNTU的phpmyadmin路徑
可以查/etc/apache2/conf-enabled/phpmyadmin.conf
應該 是放在/usr/share/phpmyadmin

另一個方法 參考 台部落
在/usr/share/phpMyAdmin / libraries / config.default.php 裏找到$cfg[‘LoginCookieValidity’] = 1440;

如何得知目前phpmyadmin的連線時間限制?
不知道phpmyadmin哪個程式有顯示這個訊息,所以就自已寫了。
/usr/share/phpmyadmin/server_status.php
 

$lcv='LoginCookieValidity:'. $cfg['LoginCookieValidity'];
$response->addHTML($lcv);

在phpmyadmin的操作界面中,點伺服器–>狀態,就可以查詢目前的連線限制。

後來發現這個值可以在phpmyadmin 伺服器–>設定–>功能中找到

 

不用密碼就可登錄,適用於測試環境
編輯config.inc.php 把帳號密碼寫入設定檔
$cfg[‘Servers’][$i][‘auth_type’] = 'config';
$cfg[‘Servers’][$i][‘user’] = 'root';
$cfg[‘Servers’][$i][‘password’] = 'xxxxxx';

發表於 Linux系統, 程式設計 | 發表迴響

firefox 好用的附加元件

參考網址:
 Clear  Browing Data
Delete browsing data directly from the browser toolbar. Clear cookies, history and cache with a single click.

JavaScript Errors Notifier
Notifies JavaScript errors by icon in toolbar bar or notification popup
GitHub → https://goo.gl/RBcFK8
Test page → https://goo.gl/IEXS2y
按F12可以快速打開開發人員工具

Print Preview Button
Open the Print Preview to view a page before printing it.
Paper costs money (and trees) so it is worth checking what the page looks like before you print it. Though it has always amazed me just how much the button gets downloaded.

發表於 程式設計, 軟體使用 | 發表迴響

PHP 取得用戶真實 IP

參考網址:Linux 技術手札

要用 PHP 取得用戶的 IP 十分容易,只要用 $_SERVER[‘REMOTE_ADDR’] 變數就可以知道用戶的 IP,但如果用戶使用了 proxy server 上網的話,$_SERVER[‘REMOTE_ADDR’] 只會得到 proxy 的 IP 地址。

以下方法會使用 $_SERVER[“HTTP_CLIENT_IP”] 及 $_SERVER[“HTTP_X_FORWARDED_FOR”] 解決這個問題:

<?php
if (!empty($_SERVER["HTTP_CLIENT_IP"])){
    $ip = $_SERVER["HTTP_CLIENT_IP"];
}elseif(!empty($_SERVER["HTTP_X_FORWARDED_FOR"])){
    $ip = $_SERVER["HTTP_X_FORWARDED_FOR"];
}else{
    $ip = $_SERVER["REMOTE_ADDR"];
}
     
echo $ip;
?>

 

發表於 程式設計 | 發表迴響