Posts Tagged ‘code’

Symfony 筆記 (1): Basics for Converting from PHP

Saturday, May 24th, 2008

Constant

sfConfig::set('key', 'value');
echo sfConfig::get('key');

Using External PHP Class

  1. Place in lib/ directory
  2. Provide __autoload() function
  3. Symfony will automatically load so include statement is unnecessary.

Passing Variables from Action to Template
In Action:

class mymoduleActions extends sfActions
{
  public function executeMyAction()
  {
    $this->hour = $today['hours'];
  }
}

In Template:

<p>It is already <?php echo $hour ?>.</p>

Form (with helper)
HTML Version:

<form method="post" action="/myapp_dev.php/mymodule/anotherAction">
  <label for="name">What is your name?</label>
  <input type="text" name="name" id="name" value="" />
  <select name="cc_type" id="cc_type">
    <option value="VISA">Visa</option>
    <option value="MAST">MasterCard</option>
    <option value="AMEX" selected="selected">American Express</option>
    <option value="DISC">Discover</option>
  </select>
  <input type="submit" value="Ok" />
</form>

Symfony Version:

<?php echo form_tag('mymodule/anotherAction') ?>
  <?php echo label_for('name', 'What is your name?') ?>
  <?php echo input_tag('name') ?>
  <?php $card_list = array(
    'VISA' => 'Visa',
    'MAST' => 'MasterCard',
    'AMEX' => 'American Express',
    'DISC' => 'Discover');
  echo select_tag('cc_type, options_for_select($card_list, 'AMEX')); ?>
  <?php echo submit_tag('Ok') ?>
</form>

Hyperlink (with helper)
HTML Version:

<a class="special_link" onclick="return confirm('Are you sure?');"
    href="http://localhost/myapp_dev.php/mymodule/anotherAction/name/anonymous">
    I never say my name</a>

Symfony Version:

<?php echo link_to('I never say my name', 'mymodule/anotherAction?name=anonymous',
  'class=special_link confirm=Are you sure? absolute=true') ?>

Post/Get Data
In Action:

class mymoduleActions extends sfActions
{
  ...

  public function executeAnotherAction()
  {
    $this->name = $this->getRequestParameter('name');
  }
}

In Template:

<?php if ($sf_params->has('name')): ?>
  <p>Hello, <?php echo $sf_params->get('name') ?>!</p>
<?php else: ?>
  <p>Hello, John Doe!</p>
<?php endif; ?>

or

<p>Hello, <?php echo $sf_params->get('name', 'John Doe') ?>!</p>

2-pass ffmpeg ipod video encoding

Friday, April 4th, 2008

把檔案存成 ipodconv

input_file=$1
output_dir=/home/peter/.ipodvideos

ffmpeg -y -i "${input_file}" -an -v 1 -threads auto -vcodec libx264 \
  -b 1000k -bt 175k -refs 1 -loop 1 -deblockalpha 0 -deblockbeta 0 \
  -parti4x4 1 -partp8x8 1 -me full -subq 1 -me_range 21 -chroma 1 \
  -slice 2 -bf 0 -level 30 -g 300 -keyint_min 30 -sc_threshold 40 \
  -rc_eq 'blurCplx^(1-qComp)' -qcomp 0.7 -qmax 51 -qdiff 4 \
  -i_qfactor 0.71428572 -maxrate 768k -bufsize 2M -cmp 1 -s 640x480 \
  -f mp4 -pass 1 /dev/null

ffmpeg -y -i "${input_file}" -v 1 -threads auto -vcodec libx264 -b 1000k\
  -bt 175k -refs 1 -loop 1 -deblockalpha 0 -deblockbeta 0 -parti4x4 1 \
  -partp8x8 1 -me full -subq 6 -me_range 21 -chroma 1 -slice 2 -bf 0 \
  -level 30 -g 300 -keyint_min 30 -sc_threshold 40 \
  -rc_eq 'blurCplx^(1-qComp)' -qcomp 0.7 -qmax 51 -qdiff 4 \
  -i_qfactor 0.71428572 -maxrate 768k -bufsize 2M -cmp 1 -s 640x480 \
  -acodec libfaac -ab 192k -ar 48000 -ac 2 -f mp4 \
  -pass 2 "${output_dir}/${input_file}.mov"

2 pass encoding 的用意是在於第一次是作 profiling,然後第二次就參照第一次得到的 profile 來分配哪些片段要比較高的 bitrate,這樣整體壓縮起來的效果會好很多。

不過話說回來以上的 h264 + aac 的壓縮實在非常 CPU intensive,速度大概是 mp4 的 4~5 倍.. 囧

python-pycurl on Shared Host

Friday, March 21st, 2008

編 Python 2.5, MySQLdb 都很輕鬆
就 make –prefix=~/ 和 python setup.py install 而已
但是 pycurl 讓我浪費了好多個小時的人生

我一直碰到的問題是這樣:

# python
Python 2.5.2 (r252:60911, Mar 21 2008, 05:12:12)
[GCC 3.4.6 20060404 (Red Hat 3.4.6-9)] on linux2
Type “help”, “copyright”, “credits” or “license” for more information.
>>> import pycurl
Traceback (most recent call last):
File ““, line 1, in
ImportError: libcurl.so.4: cannot open shared object file: No such file or directory
>>>

把浪費的時間跳過,總之就是 pycurl 沒寫好 (怨念總是得目標來發洩)
setup 時候的 –curl-config 就跟你說在 ~/lib 了,還去 /usr/lib 下面找 libcurl.so.4
好吧或許摸 unix 環境的時間還不夠久,總之最後發現只要這樣子就解決掉了

export LD_LIBRARY_PATH=~/lib

真是浪費生命

Python unescape javascript escapped UTF8 sequence

Sunday, March 16th, 2008

尋找這種答案很浪費生命,記錄下來

print "".join([(len(i)>0 and unichr(int(i,16)) or "") for i in url.split('%u')])

簡體 UTF8 -> 繁體/正體 UTF8

Saturday, March 15th, 2008

Encode-CNmap 是好朋友
雖然字表沒有完整,但是大部份都有轉換成功,而且使用上也不錯簡單
轉換文字檔案:
cnmap -u2cb5 utf8.txt > utf8-cntrad.txt

對於懶得在 Python 下面 implement 繁簡轉換的人(me?)實在很好用:

import commands
s = commands.getoutput("echo '简体中文' | cnmap -ucb5")
print s

說真的,這方法最好別用 XD

All Rights Reserved Copyright © 2008 Design by StyleShout and Clazh