Ruby + MySQL จาก Macports

ผมใช้ ruby จาก rvm ไม่ได้ลงจาก macports ( อาจจะไม่เกี่ยวอะไรเลย ) แล้วก็ gem install ruby-mysql

ทีนี้ใน code ผมเขียนประมาณว่า

db = Mysql.connect('localhost', 'root', 'mypass', 'mydb')

แค่นี้เองพอ run แล้วเจ๊งเลยขึ้นแบบนี้ … gems/ruby-mysql-2.9.13/lib/mysql/protocol.rb:150: in`initialize’: No such file or directory – connect(2) for “/tmp/mysql.sock” (Errno::ENOENT)

แต่อันนี้ก็ทำนองว่าเจอบ่อยแล้ว mysql ที่ลงจาก macports ไม่ได้ใช้ไฟล์นั้นผมก็เลยลองเข้าไปดูไฟล์ protocol.rb ก็มีท่าแก้แบบนี้

MYSQL_UNIX_PORT=/opt/local/var/run/mysql5/mysqld.sock ruby my_prog.rb


สิ่งที่ควรทำก่อนใช้ LibreOffice กับภาษาไทย

ก่อนใช้ LibreOffice กับภาษาไทยทีแรกผมก็งง ๆ มันต้องเข้าไปที่ LibreOffice -> Preferences … แล้วก็เข้าไปทำตามรูปครับเลือก Enabled for complex text layout (CTL) ซะ เลือกภาษาไทยด้วย


ทำแบบนี้แล้วสังเกตว่าอะไรจะราบรื่นขึ้น โดยเฉพาะเวลาที่ไปแก้ style

ลง pdo_mysql บน Mac OS X 10.7.5 ปน ๆ กับ Macports

ผมลง PHP 5.4 กับ Apache ผ่าน Macports แต่ว่า pdo_mysql ใน Macports ไม่มีมั้ง ก็เลยลง pear เอง แล้วก็จะลง pdo_mysql จากผ่าน pecl ลองลงแบบท่าปกติแล้วมันเจ๊ง ปัญหาส่วนมากเพราะหา mysql5 ที่ใน Macports นี่ path มันก็จะแปลก ๆ หน่อย

ปัญหาแรกคือหา mysql_config5 ไม่เจอ  ผมก็จัดแบบนี้เลย

PDO_MYSQL_CONFIG=/opt/local/bin/mysql_config5 /Users/user_name/pear/bin/pecl install pdo_mysql

อันนี้ก็เสร็จไปด่านหนึ่งแต่ว่า เวลามาเรียกก็ยังเจ๊งอยู่ดีขึ้น file not found อะไรสักอย่าง เพราะหา file ที่แทน socket ไม่เจอ อันนี้ก็เข้าไปแก้ใน /opt/local/etc/php54/php.ini เพิ่ม


เข้าไป ก็เป็นอันใช้ได้

GIZA++ on Mac OS X

Now I can install GIZA++ on Mac OS X by just typing “sudo port install giza-pp”. It is very convenient. However the file system on the machine I’m using isn’t case sensitive. So * and * are the same file.  

In order to solve this, I decided to install giza-pp 1.0.7 from source code instead and modify like I did in 2006 on my iBook G4 and it still works ^^.

I used to use UFS instead of HFS+. And I also found in Wikipedia that HFS+ can be case sensitive too. But I think it is not good idea to format or modify too much the machine that is not mine😛.


After talking to @kengggg, we are agree to implement NS_GetComplexLineBreaks without using deprecated UCFindTextBreak. So I try to rewrite nsCarbonBreaker by using Core Foundation API. However I don’t have Mac since 2008 so I didn’t test. In fact, I don’t even try to compile the code.

/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* ***** BEGIN LICENSE BLOCK *****
 * Version: MPL 1.1/GPL 2.0/LGPL 2.1
 * The contents of this file are subject to the Mozilla Public License Version
 * 1.1 (the "License"); you may not use this file except in compliance with
 * the License. You may obtain a copy of the License at
 * Software distributed under the License is distributed on an "AS IS" basis,
 * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
 * for the specific language governing rights and limitations under the
 * License.
 * The Original Code is code.
 * The Initial Developer of the Original Code is
 * Theppitak Karoonboonyanan <>.
 * Portions created by the Initial Developer are Copyright (C) 2007
 * the Initial Developer. All Rights Reserved.
 * Contributor(s):
 * - Theppitak Karoonboonyanan <>
 * Alternatively, the contents of this file may be used under the terms of
 * either of the GNU General Public License Version 2 or later (the "GPL"),
 * or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
 * in which case the provisions of the GPL or the LGPL are applicable instead
 * of those above. If you wish to allow use of your version of this file only
 * under the terms of either the GPL or the LGPL, and not to allow others to
 * use your version of this file under the terms of the MPL, indicate your
 * decision by deleting the provisions above and replace them with the notice
 * and other provisions required by the GPL or the LGPL. If you do not delete
 * the provisions above, a recipient may use your version of this file under
 * the terms of any one of the MPL, the GPL or the LGPL.
 * ***** END LICENSE BLOCK ***** */

#include "nsComplexBreaker.h"
#include <CoreFoundation/CFStringTokenizer.h>
#include <CoreFoundation/CFBase.h>

// An imaginary nsCoreFoundationBreaker
// I don't have Mac since 2008 (Vee Satayamas)

NS_GetComplexLineBreaks(const PRUnichar* aText, PRUint32 aLength,
                        PRPackedBool* aBreakBefore)
  NS_ASSERTION(aText, "aText shouldn't be null");

  // I don't know whether CFStringCreateWithCharactersNoCopy will works.
  // Some conversions may be needed
  CFStringRef cfAText = CFStringCreateWithCharactersNoCopy(NULL, aText, aLength,
  NS_ASSERTION(cfAText, "cfAText shouldn't be null");

  CFStringTokenizerRef tokenizer = tokenizerForString(cfAText);

    CFStringTokenizerTokenType  tokenType; 
    // CFStringTokenizerGetCurrentTokenRange may have to be called before
    // CFStringTokenizerAdvanceToNextToken
    while(CFStringTokenizerAdvanceToNextToken(tokenizer) != 
      CFRange tokenRange = CFStringTokenizerGetCurrentTokenRange(tokenizer);
      aBreakBefore[tokenRange.location + tokenRange.length] = PR_TRUE;

  // Foundation.h must be included for CFRelease?