tag:blogger.com,1999:blog-59465307047421309702024-03-06T16:20:07.273+08:00Jax 的工作紀錄除了在整理學習上的經驗,同時也能幫助其他需要的人Jax Huhttp://www.blogger.com/profile/01953021685585893658noreply@blogger.comBlogger6125tag:blogger.com,1999:blog-5946530704742130970.post-55480413068311281562017-09-01T11:27:00.000+08:002017-09-01T11:29:22.939+08:00SQL Server Management Studio 資料表設計模式顯示欄位描述 <br />
開啟登錄檔編輯器 regedit.exe <br />
搜尋 SSVPropViewColumnsSQL70 及 SSVPropViewColumnsSQL80 <br />
將值從 1,2,6; 改為 1,2,6,17;<br />
<br />
各個屬性欄位代號:<br />
<pre>1: Column Name
2: Data Type
3: Length
4: Precision
5: Scale
6: Allow Nulls
7: Default Value
8: Identity
9: Identity Seed
10: Identity Increment
11: Row GUID
12: Nullable
13: Condensed Type
14: Not for Replication
15: Formula
16: Collation
17: Description
</pre><br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEicoX6JfbJq4x4cZWbkQRd7rZ-nr7C8VOqy9n8g-pdaSbHNejWwl1A4D4xTLJLRGayl5vaq0HhwZpO698-6sn4dh7YnK_rp0e2csOuZcCrQ-qMlxJjhPqWTWWjO86tpkCzJr1e7Ns1nc213/s1600/MWSnap124.png"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEicoX6JfbJq4x4cZWbkQRd7rZ-nr7C8VOqy9n8g-pdaSbHNejWwl1A4D4xTLJLRGayl5vaq0HhwZpO698-6sn4dh7YnK_rp0e2csOuZcCrQ-qMlxJjhPqWTWWjO86tpkCzJr1e7Ns1nc213/s550/MWSnap124.png" /></a><br />
<br />
<a href="https://4.bp.blogspot.com/-o5BU68BCQ18/WajTPWv4ttI/AAAAAAAAN8I/ffwgywSoVsYUIfydV0sTFuhQd4XYY3VuACLcBGAs/s1600/MWSnap125.png"><img src="https://4.bp.blogspot.com/-o5BU68BCQ18/WajTPWv4ttI/AAAAAAAAN8I/ffwgywSoVsYUIfydV0sTFuhQd4XYY3VuACLcBGAs/s550/MWSnap125.png" /></a>Jax Huhttp://www.blogger.com/profile/01953021685585893658noreply@blogger.com0tag:blogger.com,1999:blog-5946530704742130970.post-5254769756673397792016-04-07T12:07:00.001+08:002023-02-25T21:29:35.395+08:00C# MVC + Cassette<a href="http://getcassette.net/" target="_blank">Cassette</a> 與 MVC 預設的 Bundle 最大的差異就是會自動轉換 CSS 的圖片網址。缺點就是開發時 F5 啟動專案會變慢。<br />
<br />
<br />
<h3>NuGet 安裝</h3><ul><li>Cassette.Aspnet</li>
<li>Cassette.Views</li>
<li>Cassette</li>
</ul><br />
<br />
<h3>Web.config</h3><br />
基本上安裝完就會自動配置以下設定,但可以在確認一下。<br />
<br />
<pre class="xml" name="code"><configuration>
<configSections>
<section name="cassette"
type="Cassette.CassetteConfigurationSection, Cassette"
requirePermission="false"
/>
</configSections>
<system.web>
<pages>
<namespaces>
<add namespace="Cassette.Views" />
</namespaces>
</pages>
<httpModules>
<add name="CassetteHttpModule"
type="Cassette.Aspnet.CassetteHttpModule, Cassette.Aspnet"
/>
</httpModules>
<httpHandlers>
<!-- 用來處理綑綁打包的處理器 -->
<add path="cassette.axd"
verb="*"
type="Cassette.Aspnet.CassetteHttpHandler, Cassette.Aspnet"
/>
</httpHandlers>
</system.web>
<system.webServer>
<!-- 保留 httpHandlers(IIS6) 及 handlers(IIS7) 需要關閉驗證 -->
<validation validateIntegratedModeConfiguration="false" />
<modules>
<add name="CassetteHttpModule"
type="Cassette.Aspnet.CassetteHttpModule, Cassette.Aspnet"
/>
</modules>
<handlers>
<!-- 用來處理綑綁打包的處理器 -->
<add name="CassetteHttpHandler"
path="cassette.axd"
verb="*"
allowPathInfo="true"
preCondition="integratedMode"
type="Cassette.Aspnet.CassetteHttpHandler, Cassette.Aspnet"
/>
</handlers>
</system.webServer>
<!-- For configuration options: http://getcassette.net/documentation/v2/web-config -->
<cassette rewriteHtml="false" />
</configuration>
</pre><br />
<br />
<br />
<h3>Views/Web.config</h3><br />
增加給 cshtml 用的 namespace<br />
<br />
<pre class="xml" name="code"><configuration>
<system.web.webPages.razor>
<pages pageBaseType="System.Web.Mvc.WebViewPage">
<namespaces>
<add namespace="Cassette.Views" />
</namespaces>
</pages>
</system.web.webPages.razor>
</configuration>
</pre><br />
<br />
<br />
<h3>CassetteConfiguration.cs</h3><br />
<pre class="cs" name="code">public class CassetteBundleConfiguration : IConfiguration<BundleCollection>
{
public void Configure(BundleCollection bundles)
{
bundles.AddPerIndividualFile<StylesheetBundle>("Content");
bundles.AddPerIndividualFile<ScriptBundle>("Scripts");
bundles.Add<StylesheetBundle>("Styles/Bundles", new string[]
{
"~/Scripts/bootstrap/css/bootstrap.css",
"~/Scripts/bootstrap/css/bootstrap-theme.css",
//...
});
bundles.Add<ScriptBundle>("Scripts/Bundles", new string[]
{
"~/Scripts/jquery/jquery-1.12.2.js",
"~/Scripts/jquery.validate/jquery.validate-1.12.0.js",
//...
});
}
}
</pre><br />
<br />
<br />
<h3>_Layout.cshtml</h3><br />
<pre class="xml" name="code"><!DOCTYPE html>
@{
Bundles.Reference("Styles/Bundles");
Bundles.Reference("Scripts/Bundles");
}
<html>
<head>
@Bundles.RenderStylesheets()
</head>
<body id="DialogLayout">
@Bundles.RenderScripts()
</body>
</html>
</pre><br />
<br />
<br />
<h3>Release Mode</h3><br />
當 Web.config 的 compilation debug="false" 就會壓縮綑綁。 <br />
<br />
<pre class="xml" name="code"><compilation debug="false" targetFramework="4.5" />
</pre>Jax Huhttp://www.blogger.com/profile/01953021685585893658noreply@blogger.com0tag:blogger.com,1999:blog-5946530704742130970.post-17281822509853364672013-08-17T14:55:00.001+08:002013-08-17T15:01:57.490+08:00[PHP] url, base64, sprite 三種格式的 icons.css 產生器先做一個假設,如果 icon 的檔名就是 css 的 class 樣式名稱,那麼我們只要掃瞄資料夾的 Icon 圖檔,然後產生對應的 CSS 檔案,這樣就可以省去製作 Sprite 圖檔跟維護 CSS 對應的問題。<br />
<br />
第一種 url 格式只是取得路徑的問題。<br />
<br />
第二種 base64 格式可以透過 <code>base64_encode(file_get_contents($path));</code> 就簡單的達成。<br />
<br />
第三種 sprite 格式則使用 <a target="_blank" href="http://php.net/manual/en/book.imagick.php">Imagick</a> 去處理,會比較快樂。<br />
<br />
<br />
接著以下就是如何達成的程式片段:<br />
<br />
<pre class="php" name="code"><?php
/*把目錄改變到當前文件下*/
chdir(dirname(__FILE__));
/*Sprite 圖與圖的間距*/
$spriteGap = 30;
/*=[ 取得圖檔資訊 ]=*/
$maxWidth = 0;
$maxHeight = 0;
$nextTop = 0;
$imageList = array();
foreach ( glob('icons/*.{png,jpg,gif}',GLOB_BRACE) as $path )
{
$image = new Imagick($path);
$name = pathinfo($path,PATHINFO_FILENAME);
if(isset($imageList[$name])){
throw new Exception("圖片名稱重複 [ $name ]");
}
$info = array(
'{top}' => $nextTop,
'{image}' => $image,
'{width}' => $image->getImageWidth(),
'{height}' => $image->getImageHeight(),
'{name}' => $name,
'{path}' => $path,
'{isAnimate}' => false
);
$header = '';
switch($image->getImageFormat()){
case "PNG":
$header = 'data:image/png;base64,'; break;
case "JPEG":
$header = 'data:image/jpeg;base64,'; break;
case "GIF":
$header = 'data:image/gif;base64,'; break;
default: break;
}
$info['{uri}'] = $header.base64_encode(file_get_contents($path));
$maxWidth = max($maxWidth, $info['{width}']);
$maxHeight = max($maxHeight, $info['{height}']);
/*檢查圖片是否為動畫*/
$frameNum = 0;
foreach($image->deconstructImages() as $i) {
$frameNum++;
if ($frameNum > 1) {
$info['{isAnimate}'] = true;
break;
}
}
if(!$info['{isAnimate}']){
$nextTop += $info['{height}'] + $spriteGap;
}
$imageList[$name] = $info;
}
/*=[ 製作 CSS Sprite 圖檔 ]=*/
$spriteImage = new Imagick();
$spriteImage->newImage($maxWidth, $nextTop, new ImagickPixel());
$spriteImage->setImageFormat('png');
$spriteImage->paintTransparentImage(new ImagickPixel(), 0.0, 0);
foreach ($imageList as $name => $info)
{
if($info['{isAnimate}']){ continue; } /* 忽略 GIF 動畫 */
/* 複製 Icon 圖檔到 Sprite */
$spriteImage->compositeImage(
$info['{image}'],
$info['{image}']->getImageCompose(),
0,
$info['{top}']
);
$info['{image}']->destroy();
unset($imageList[$name]['{image}']);
}
$spriteImage->writeImage('icons.sprite.png');
$spriteImage->destroy();
$spriteImage = null;
</pre><br />
<br />
下載完整程式: <a target="_blank" href="https://dl.dropboxusercontent.com/u/16784943/code-demo/php_make_icons_css.zip">php_make_icons_css.zip</a>Jax Huhttp://www.blogger.com/profile/01953021685585893658noreply@blogger.com0tag:blogger.com,1999:blog-5946530704742130970.post-41852202603771854022013-06-05T22:58:00.000+08:002013-06-10T22:21:55.621+08:00[轉載][MySQL] 修復工具 mysqlcheck轉載自:<a target="_blank" href="http://saplingidea.iteye.com/blog/482055">mysql修复工具mysqlcheck</a><br />
<br />
<pre class="sh" name="code">mysqlcheck -a -c -o -r -m --all-databases -uroot -p
</pre><br />
即可最佳化所有db<br />
參數含意:<br />
<ul><li>-a = Analyse given tables.</li>
<li>-c = Check table for errors</li>
<li>-o = Optimise table</li>
<li>-r = Can fix almost anything except unique keys that aren't unique</li>
<li>-m = --medium-check</li>
</ul><br />
<br />
mysqlcheck 客戶端可以檢查和修復 MyISAM 資料表。它還可以優化和分析資料表。<br />
<br />
mysqlcheck 的功能類似 myisamchk,但其工作不同。主要差別是當 mysqld 服務器在運行時必須使用mysqlcheck,<strong>而 myisamchk 應用於服務器沒有運行時</strong>。使用 <strong>mysqlcheck 的好處是不需要停止服務器來檢查或修復資料表</strong>。使用 <strong>myisamchk 修復失敗是不可逆的</strong>。<br />
<br />
Mysqlcheck 為用戶提供了一種方便的使用 SQL 語句 <strong>CHECK TABLE、REPAIR TABLE、ANALYZE TABLE和OPTIMIZE TABLE</strong> 的方式。它確定在要執行的操作中使用使用哪個語句,然後將語句發送到要執行的服務器上。<br />
<br />
<br />
有3種方式來調用mysqlcheck:<br />
shell> mysqlcheck [options] db_name [tbl_name ...]<br />
shell> mysqlcheck [options] --databases db_name ...<br />
shell> mysqlcheck [options] --all-databases<br />
<br />
如果沒有指定任何資料表或使用 --databases 或 --all-databases 選項,則檢查整個數據庫。<br />
<br />
同其它客戶端比較,mysqlcheck 有一個特殊特性。重新命名二進制可以更改檢查資料表的默認行為(--check)。如果你想要一個工具默認可以修復資料表的工具,只需要將 mysqlcheck 重新復制為 mysqlrepair,或者使用一個符號鏈接 mysqlrepair 鏈接 mysqlcheck。如果調用 mysqlrepair,可按照命令修復資料表。<br />
<br />
<br />
下面的名可用來更改 mysqlcheck 的默認行為:<br />
<table class="table_list"><tr><td>mysqlrepair</td><td>默認選項為 --repair</td></tr>
<tr><td>mysqlanalyze</td><td>默認選項為 --analyze</td></tr>
<tr><td>mysqloptimize</td><td>默認選項為 --optimize</td></tr>
</table><br />
<br />
mysqlcheck支持下面的選項:<br />
<dl><dt>-A, --all-databases</dt>
<dd>檢查所有數據庫中的所有資料表。與使用---database選項相同,在命令行中命名所有數據庫。</dd>
<dt>-a, --analyze</dt>
<dd>分析資料表。</dd>
<dt>-1, --all-in-1</dt>
<dd>不是為每個表發出一個語句,而是為命名數據庫中待處理的所有表的每個數據庫執行一個語句。</dd>
<dt>--auto-repair</dt>
<dd>如果某個被檢查的表破壞了,自動修復它。檢查完所有表後自動進行所有需要的修復。</dd>
<dt>--character-sets-dir=name</dt>
<dd>字符集的安裝目錄。參見5.10.1節,"數據和排序用字符集"。</dd>
<dt>-c, --check</dt>
<dd>檢查資料表的錯誤。</dd>
<dt>-C, --check-only-changed</dt>
<dd>只檢查上次檢查以來已經更改的或沒有正確關閉的資料表。</dd>
<dt>--compress</dt>
<dd>壓縮在客戶端和服務器之間發送的所有信息(如果二者均支持壓縮)。</dd>
<dt>-B, --databases</dt>
<dd>處理數據庫中命名的所有資料表。使用該選項,所有字名參量被看作數據庫名,而不是資料表名稱。</dd>
<dt>-#, --debug[=#]</dt>
<dd>寫調試日誌。 debug_options字符串通常為'd:t:o,file_name'。</dd>
<dt>--default-character-set=name</dt>
<dd>使用charsetas默認字符集。參見5.10.1節,"數據和排序用字符集"。</dd>
<dt>-F, --fast</dt>
<dd>只檢查沒有正確關閉的資料表。</dd>
<dt>-f, --force</dt>
<dd>即使出現SQL錯誤也繼續。</dd>
<dt>-e, --extended</dt>
<dd>如果你正使用該選項來檢查資料表,可以確保它們100%地一致,但需要很長的時間。 如果你正使用該選項來修復資料表,則運行擴展修復,不但執行的時間很長,而且還會產生大量的垃圾行!</dd>
<dt>-?, --help</dt>
<dd>顯示幫助消息並退出。</dd>
<dt>-h, --host=name</dt>
<dd>連接給定主機上的MySQL服務器。</dd>
<dt>-m, --medium-check</dt>
<dd>執行比--extended操作更快的檢查。只能發現99.99%的錯誤,在大多數情況下這已經足夠了。</dd>
<dt>-o, --optimize</dt>
<dd>優化資料表。</dd>
<dt>-p, --password[=name]</dt>
<dd>當連接服務器時使用的密碼。如果使用短選項形式(-p),選項和密碼之間不能有空格。 如果在命令行中--password或-p選項後面沒有密碼值,則提示輸入一個密碼。</dd>
<dt>-P, --port=#</dt>
<dd>用於連接的TCP/IP端口號。</dd>
<dt>--protocol=name</dt>
<dd>使用的連接協議。</dd>
<dt>-q, --quick</dt>
<dd>如果你正使用該選項在檢查資料表,它防止掃描行以檢查錯誤鏈接的檢查。這是最快的檢查方法。 如果你正使用該選項在修復資料表,它嘗試只修復索引樹。這是最快的修復方法。</dd>
<dt>-r, --repair</dt>
<dd>執行可以修復大部分問題的修復,只是唯一值不唯一時不能修復。</dd>
<dt>-s, --silent</dt>
<dd>沉默模式。只打印錯誤消息。</dd>
<dt>-S, --socket=name</dt>
<dd>用於連接的套接字文件。</dd>
<dt>--tables</dt>
<dd>覆蓋---database或-B選項。選項後面的所有參量被視為資料表名稱。</dd>
<dt>-u, --user=name</dt>
<dd>當連接服務器時使用的MySQL用戶名。</dd>
<dt>-v, --verbose</dt>
<dd>冗長模式。打印關於各階段程序操作的信息。</dd>
<dt>-V, --version</dt>
<dd>顯示版本信息並退出。</dd> </dl>Jax Huhttp://www.blogger.com/profile/01953021685585893658noreply@blogger.com0tag:blogger.com,1999:blog-5946530704742130970.post-43731950219784708392009-04-29T21:34:00.008+08:002011-05-06T18:13:43.458+08:00Web 文件類型壓縮及註解清除器大部分的 Web 文件壓縮,都是將不要的<span style="color: rgb(255, 0, 0); font-weight: bold;">空白文字或不必要的註解清除</span>,以換取檔案的大小。<br /><br />之前找尋不到合適的工具,索性就自己寫一個工具,這次將之前的<a href="/2008/06/html-smartyjavascriptcss-php.html">HTML & Smarty、JavaScript、CSS 及 PHP 註解清除器</a>做一個整合,並且做一些使用上的教學。<br /><br />修改特點:<br /><ul><li>整合之前的文件類型至一個工具上</li><li>只針對 <span style="color: rgb(255, 0, 0); font-weight: bold;">html , htm , css , js 及 php 副檔名</span>的文件做處理</li><li>增加參數選擇</li></ul><br /><h4>web_clear 參數說明</h4>web_clear [-hvc] (filename)<br />[-h | -?] : 顯示參數說明<br />[-v] : 顯示被執行的檔案列表<br />[-c] : 單純只清除註解<br />(filename) : 檔案路徑或目錄路徑<br /><br /><br /><h4>Windows 下的操作</h4><img src="http://1.bp.blogspot.com/_b8lN_UbLoEc/SfgrteQhD5I/AAAAAAAAEME/Ciw18fvXfu0/20090429-181052.jpg" alt="" id="BLOGGER_PHOTO_ID_5330058219209428882" border="0" /><br />可以透過拖移文件或資料夾的方式執行此工具。<br /><br />也可以透過命令列或批次檔去執行<br /><pre class="sh" name="code"><br />@ECHO off<br /><br />web_clear.exe -v "Z:\Web" Z:\WebServer\1.html Z:\WebServer\1.css <br /><br />PAUSE <br /></pre><br /><br /><h4>Linux 下的操作</h4>透過命令列或 Shell 去執行<br /><pre class="sh" name="code"><br />#!/bin/bash<br /><br />PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin<br />export PATH<br /><br />./web_clear -v /home/test/index.php<br /><br /># 也可以配合 find 去執行<br />#./web_clear -v `find /home/test -name '*.css' -or -name '*.js'`<br /><br />exit 0<br /></pre><br /><br /><h4>檔案下載:</h4><a target="_blank" href="http://sites.google.com/site/weskerjax/code-demo/web_clear.tar.gz">web_clear.tar.gz</a><br /><br /><pre class="sh:nocontrols" name="code"><br />web_clear<br />|-- linux<br />| |-- source<br />| | |-- web_clear.c<br />| | `-- web_clear.l<br />| |<br />| |-- clear_file.sh<br />| `-- web_clear<br />|<br />`-- windows<br /> |-- source<br /> | |-- web_clear.c<br /> | `-- web_clear.l<br /> |<br /> |-- clear_file.bat<br /> `-- web_clear.exe<br /><br />4 directories, 8 files<br /></pre>Jax Huhttp://www.blogger.com/profile/01953021685585893658noreply@blogger.com10tag:blogger.com,1999:blog-5946530704742130970.post-29889402534086495552007-10-16T21:07:00.002+08:002013-06-11T20:49:13.468+08:00UltraEdit-32 關鍵字色彩為了讓寫 SQL 指令可以更容易,我修改了 UltraEdit-32 中的 WORDFILE.TXT 檔,可是關鍵字實在太多了,所以上網找了一些定義好的來用,但是只有支援小寫,所以只好自己再加上大寫的部分,也順便加了 PHP 及 JavaScript2.0 的色彩樣式。<br />
<br />
在新增樣式時要注意樣式編號要改一下,在每個樣式的第一行都有一個 /L? 的編號,而且必須延續上一個編號,用 UltraEdit-32 那麼久,他真的是一個不錯的文字編輯器,可以在很多語言上都用得到,還有非常方便的編碼轉換及許多功能。<br />
<br />
<a target="_blank" href="ftp://ultraedit.com/wf/">官方下載 FTP </a><br />
<br />
<a target="_blank" href="http://www.cnblogs.com/Emb.BOB/archive/2004/09/11/42188.html">資料列表:山区程序员</a>Jax Huhttp://www.blogger.com/profile/01953021685585893658noreply@blogger.com0