Bỡ ngỡ với git

Trước toàn dùng svn tortoise, chuyển sang dùng github.com, cảm thấy thật hiện đại, xịn, chuyên nghiệp, và … khó hiểu vãi lúa. Vừa rồi mới dính một quả lộn code, mà không hiểu tại sao lộn, check log thì vẫn  thấy là khi bị conflict, mình đã “Accept theirs”, nghĩa là dùng code của master, thế mà mấy hôm sau check lại lại thấy lù lù code của mình.

Và để fix lại lỗi commit nhầm, dưới sự hướng dẫn của các chuyên gia git, mình đã làm như sau:

  1. Tìm ra bản code trước khi có phiên bản lỗi, gọi là bản ABC đi.
  2. Sang branch của mình đang code (git checkout thai_branch)
  3. Hồi về phiên bản ABC bằng lệnh “git rebase -i ABC^”, nhớ là có dấu mũ (^) sau ABC
  4. Giải quyết hết các file đang bị conflict, commit lên local.
  5. Pull branch của mình về, giải quyết conflict nếu có. Commit lên local.
  6. Checkout sang branch master, pull code của branch master về,
  7. Sang branch thai_branch, gõ lệnh merge: git merge –no-ff, giải quyết các conflict nếu có, commit lên local
  8. Push lên branch của mình.
  9. Push lên branch master.

Bản chất của mình sai do pull chéo, thấy Xutale giải thích thế. Nghĩa là đang đứng ở thai_branch nhưng lại gõ lệnh “git pull origin master”. Đáng ra phải làm theo thứ tự sau:

  • git commit (commit code trên local, đề phòng mất code)
  • git pull origin thai_branch (thường là bước này làm trước khi code, sau khi code chắc cũng không sao, vì chỉ mình mình code nhánh này)
  • git checkout master (sang bên master)
  • git pull origin master (lấy code mới nhất trên master về nhánh master)
  • git checkout thai_branch
  • git merge –no-ff master (merge master vào thai_branch)

sau đó giải quyết các conflict, sau đó thì đẩy lên thai_branch

  • git push origin thai_branch

Sau đó lại sang master để merge và push:

  • git checkout master
  • git merge –no-ff thai_branch
  • git push orign master

Đây là thứ tự lệnh đã thực hiện:

337 git checkout thai_branch
338 git branch
339 git status
340 git rebase -i 19a5625ebdd079d8e2165c67b89369cbbaadfcee^
341 git commit
342 git status
343 git rebase –skip
344 git rebase –continue
345 git status
346 git add -A .
347 git status
348 git rebase –continue
349 git status
350 git add src/java/recsys/datacollector/crawler/sites/DaemonReleaseData.java
351 git status
352 git rebase –continue
353 git status
354 git add src/java/recsys/datacollector/crawler/sites/news/EvaVn.java
355 git status
356 git rebase –skip
357 git status
358 git pull origin -f
359 git status
360 git log
361 git checkout master
362 git pull origin master
363 git checkout thai_branch
364 git merge –no-ff master
365 git status
366 git add -A .
367 git status
368 git commit -m “merge code after rebase”
369 git status
370 git log
372 git branch
373 git push origin thai_branch
374 git pull origin thai_branch
375 git push origin thai_branch
376 git checkout master
377 git pull origin master
378 git merge –no-ff
379 git merge –no-ff thai_branch
380 git status
382 git push origin master

Tách chuỗi thành mảng trong oracle

/* Formatted on 3/4/2015 12:32:08 AM (QP5 v5.126) */
DECLARE
l_input VARCHAR2 (4000) := ‘1,2,3’;
l_count BINARY_INTEGER;
l_array DBMS_UTILITY.lname_array;
BEGIN
SELECT param_value
INTO l_input
FROM item_param_detail
WHERE param_value LIKE ‘TO%,%’;

DBMS_UTILITY.comma_to_table (
list => REGEXP_REPLACE (l_input, ‘(^|,)’, ‘\1x’),
tablen => l_count,
tab => l_array);
DBMS_OUTPUT.put_line (l_count);

FOR i IN 1 .. l_count
LOOP
DBMS_OUTPUT.put_line( ‘Element ‘
|| TO_CHAR (i)
|| ‘ of array contains: ‘
|| SUBSTR (l_array (i), 2));
END LOOP;
END;

Refresh

Lâu lâu đổi giao diện tí cho nó mới mẻ 😀 Đánh đu với bạn Miso – Minh Sơn một tí 😛 Thật ra thì mình thích gọi Minh Sơn hơn là Miso, Minh Sơn nghe rất kêu và có-vẻ-đẹp-trai-tài-giỏi 😉 Còn Miso thì có vẻ đáng yêu và dàng cho người yêu gọi ;)) Như kiểu ngày xưa hồi cấp 3, có một cô bé xinh đẹp dễ thương gọi mình là Mino vậy :”> 😡 😀
Chưa sửa được mấy nhiều, giao diện hơi tối và chữ hơi nhỏ thì phải, kệ đi ngủ đã 😀

Easyphp in windows7 64bit

Cách dễ nhất và nhanh nhất để tạo localhost, test tiếc nghịch ngợm chính là dùng easyphp, gọn nhẹ, hơn xampp là cái chắc ;)) đơn giản, dễ dàng. Nhưng trên bản 64bit nó dở chứng ầm ĩ ko dùng dc, hôm nọ cài apache rồi php mệt quá, hnay cài thêm mysql nhưng khổ quá, may tìm ra cái này, chiếm luôn :))

http://ryan.rawswift.com/2009/09/20/easyphp-on-64-bit-windows-7-how-to-fix-apache-and-mysql-problem/

EasyPHP on Windows 7EasyPHP on Windows 7

Apache

I am accustomed in using EasyPHP on a Windows platform. Installation, running, and configuring it is always a breeze (on Windows XP that is). Recently I’ve installed Windows 7 RTM on my MSI notebook and installed EasyPHP 5.3.0, though the Installation goes flawlessly but then when I launch the stack software, Apache wouldn’t start.

I turned off the firewall but no luck. So I did a search on google, again no luck with Windows 7 specific solution but I found one for Windows Vista. I tried it anyway, then BAM! It worked! I finally got Apache to start, tried opening the local default web and it worked perfectly. Here’s the error message and how to fix it:

Apache cannot be runned: another Web server use the Web port
or port is blocked by firewall.
  1. Click the EasyPHP icon beside “Apache” button.
  2. Click “Configure” then click “EasyPHP“.
  3. Uncheck “Check server’s TCP port before starting” then click “Apply” button and then “Close” button.
  4. Click “Apache” button and then click “Start“.

That would fix the “Apache cannot be runned…” problem.

MySQL

Got the Apache server to work but after I closed EasyPHP and run it again, I’m hit with another error message:

Unexpected end of MySql... See log file?

Now it’s from MySQL. After a few head scratching and inspection. And then it hit me! I figure that must be a permission problem. So I changed my user’s permission for the EasyPHP directory and Viola! MySQL finally start. Solved the MySQL problem. Here’s what I did:

  1. Go to “Computer“, open/view Drive C, then double click “Program Files (x86)“.
  2. Right click on “EasyPHP5.3.0” folder then click “Properties“.
  3. On “Security” tab click “Edit…” button.
  4. Select the user that you are currently using.
  5. Under “Permissions for Users” box, tick “Full control” on “Allow” column.
  6. And then click “OK” button to apply the changes.

Now you’ll be able to start MySQL server by clicking “MySQL” button on EasyPHP dialog and then click “Start“.

Hope this helps!

Tucan Manager – Ác như thú :-ss

===================
Description
=========

– Tucan is a free and open source application designed for automatic
management of downloads and uploads at hosting sites like:

http://rapidshare.com/
http://megaupload.com/
http://gigasize.com/
http://mediafire.com/
http://4shared.com/
http://sendspace.com/
– (…)

===================
Characteristics
=========

– Written entirely in Python.
– Graphical User Interface written in PyGTK (GTK+ toolkit).
– Multiplatform (GNU/Linux, FreeBSD, Microsoft Windows…).
– Easy to expand with plugins.
– Lightweight and fast.
– Management of waits between downloads (anonymous access).
– Captcha recognition where needed (like anonymous access to
megaupload or gigasize).
– Management of interchangeable links.

===================
Plugins
=========

http://rapidshare.com/
– Downloads:
– Anonymous access: Available = Yes
– Premium access: Available = Yes

– Uploads: Available = Not yet

http://megaupload.com/
– Downloads:
– Anonymous access: Available = Yes
– Premium access: Available = Yes

– Uploads: Available = Not yet

http://gigasize.com/
– Downloads:
– Anonymous access: Available = Yes
– Premium access: Available = No

– Uploads: Available = Not yet

http://mediafire.com/
– Downloads:
– Anonymous access: Available = Yes
– Premium access: Available = No

– Uploads: Available = Not yet

http://4shared.com/
– Downloads:
– Anonymous access: Available = Yes
– Premium access: Available = No

– Uploads: Available = Not yet

http://sendspace.com/
– Downloads:
– Anonymous access: Available = Yes
– Premium access: Available = No

– Uploads: Available = Not yet

===================
Download
=========

– Development version (needs subversion):

$ svn co https://forja.rediris.es/svn/cusl3-tucan/trunk tucan

– Stable version:

https://forja.rediris.es/projects/cusl3-tucan/ -> Files

===================
Installation & Usage
=========

– Unpack the tarball:

$ tar zxvf tucan-<version>.tar.gz
$ cd tucan-<version>/

– Install Tucan typing (needs root privileges):

# make install

– Uninstall Tucan typing (needs root privileges):

# make uninstall

– Run Tucan typing in a terminal:

$ tucan

===================
Update Manager
=========

– Tucan brings some services that sometimes need to be updated and other times
there are new services available.
– In order to update (or install new) services Tucan has a system update, to
activate it the user must go to the Preferences window > Services > Find.

– After an update of services Tucan needs to be restarted.

===================
Tips & Tricks
=========

– Before running a new version, it’s recommended to remove the directory
/home/<user>/.tucan/ or C:Documents and Settings<user>.tucan if exists.
– The first time you run Tucan (without directory ~/.tucan/), the Preferences
window appears.
– Before running a service, it must be enabled in “Service Configuration” in
the Preferences window.

– Anonymous access to http://gigasize.com/:
– gigasize.com disallows checking links if an active link is already
downloading from this service.

===================
Links
=========

http://tucaneando.wordpress.com/
http://cusl3-tucan.forja.rediris.es/
https://forja.rediris.es/projects/cusl3-tucan/

To do

<?php

$fp = fopen(“/tmp/lock.txt”, “w+”);

if (flock($fp, LOCK_EX)) { // do an exclusive lock
fwrite($fp, “Write something heren”);
flock($fp, LOCK_UN); // release the lock
} else {
echo “Couldn’t lock the file !”;
}

fclose($fp);

?>

http://us3.php.net/flock


read – write Berkeley DB

Response handling in response.c

Toshiba softwave development (Vietnam)


Sáng nay ko đến công ty làm mà lượn lờ sang 519 Kim Mã, thi thử ở Toshiba. Chả là hôm xưa xưa các bạn toshiba đến trường tớ giới thiệu và tuyển dụng, tớ có điền nhăng cuội vào cái application form và đưa cho mấy chị. Thế là hôm thứ 2 các chị ấy gọi điện hẹn :D, đi làm ở chỗ anh Nam rồi nhưng vẫn thích “hóng hớt” muốn đi thi thử ở các bạn Nhật Bổn xem thế nào, hehe. Với mục đi là đi thi cho biết, hơn 8h mới đi, tới nơi thì gặp bạn An cùng trường cũng đi thi. Lên phòng thi ngồi mới thấy là có nhiều người quen phết, có cả bạn Loan lớp 50CC :D. Bạn ấy cắm cúi làm rồi về rất sớm.

TSD chiếm trọn tầng 16 của tòa nhà VIT, rất là hoành tráng :D, tuy nhiên chỗ gửi xe thì hơi lởm, lại còn mất 3k nữa, tiên sư bọn nó, luật 2k mà chúng nó lấy 3k, ghét ghê, đáng ra phải miễn phí như HITC chứ :”>

Về bài thi, phải nói là rất khủng bố, 4 bài, 3 bài đầu mỗi bài 30 phút, bài cuối 80 phút (ặc ặc).  Bài đầu tiên là IQ, 25 câu hỏi trong 30 phút, bằng tiếng Việt (3 bài còn lại là TA), cũng ko khó lắm, nhưng mình cũng ko kịp làm hết :”>

Bài thứ hai cũng vẫn là IQ, à thực ra nó là GMAT thì phải :D, bằng tiếng Anh, bài này thì dễ hơn, mình làm xong rồi chuyển sang bài 3 luôn, ko đợi hết giờ.

Bài test số 3 chủ yếu về thuật toán cơ bản, bắt cả viết code nữa, code C, nói chung vẫn đỡ được, dù khoảng 4-5 câu nó hỏi “đoạn code dưới đây có vấn đề gì không”, mình nhìn chả thấy vấn đề gì, thực ra có hơi hơi thấy nhưng ko biết diễn đạt thế nào, nên thôi bỏ trắng cho nhanh :))

Test số 4 mới gọi là khủng bố, trâu bò ghê gớm, cả kiến trúc máy tính, cả code, loằng ngoằng cả, chóng mặt luôn, nhìn như nhìn bức vách ạ 😀

Đi thi để thấy trình mình rất còi, cả tiếng anh và cả code, hichic, cố lên nào. Còi mãi làm sao được, phải lớn chứ 😀