tag:blogger.com,1999:blog-31560595078674958092009-06-23T17:51:11.995+04:00Блог веселого программистаЯ надеюсь здесь собрать все, что мне кажется интересным. Возможно, это понравится и Вам.Edhttp://www.blogger.com/profile/16525191587358173023noreply@blogger.comBlogger135125tag:blogger.com,1999:blog-3156059507867495809.post-35650793081388044902009-06-10T13:45:00.003+04:002009-06-10T13:51:51.735+04:00ATI Radeon X1650 Series и ATI Overdrive<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.bloged.org/uploaded_images/Radeon-x1650-778753.jpg"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 374px; height: 400px;" src="http://www.bloged.org/uploaded_images/Radeon-x1650-778748.jpg" border="0" alt="ATI Radeon x1650 series" title="Так себе видюха. Можно найти и получше"/></a><p align=justify>Седина в бороду, бес в ребро. Решил я <strike>погонять Warcraft III</strike> протестировать производительность этой графической системы под виндой. И вот черт меня дернул залезть в настройки ATI Catalyst Control Center. Там я обнаружил возможность включить ATI Overdrive, который якобы увеличивает производительность карты. </p><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.bloged.org/uploaded_images/AtiOverdrive-732317.jpg"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 385px;" src="http://www.bloged.org/uploaded_images/AtiOverdrive-732312.jpg" border="0" alt="ATI Overdrive. Не запускайте!" title="Аццкий троян, не запускайте!" /></a><p align=justify>Ага, включил. Изменений визуально не замечал, пока не <strike>сел играть</strike> начал тестирование системы. Минут через несколько раздался писк из системного блока, и компьютер выключился. Эта софтина решила подразогнать графический процессор, в результате чего он перегрелся и сработала защита от перегрева. Ага, подумал я, а не выключить ли мне этот режим? Так вот, <b>ATI Overdrive можно только включить, <a href='http://itc.ua/forum/archive/index.php/t-12127.html' rel=nofollow target=_blank>отключить этот аццкий вирус невозможно!</a></b></p><p align=justify>Решение было найдено очень просто, надо всего лишь поставить новые дрова на эту железяку. Жизнь показала, что если что-то работает, то трогать не надо. Соблюдайте <a href="http://www.bloged.org/2008/09/blog-post_18.html">золотое правило админа</a>!</p><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3156059507867495809-3565079308138804490?l=www.bloged.org%2Findex.html'/></div>Edhttp://www.blogger.com/profile/16525191587358173023noreply@blogger.com2tag:blogger.com,1999:blog-3156059507867495809.post-91530978071892395372009-06-07T03:07:00.003+04:002009-06-07T03:41:32.784+04:00Я в восторге от Google App Engine<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.bloged.org/uploaded_images/google-app-engine-753609.png"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 250px; height: 250px;" src="http://www.bloged.org/uploaded_images/google-app-engine-753607.png" border="0" alt="Логотип Google App Engine" title="Logo Google App Engine" /></a><br /><p align=justify>Не так давно я <strike>обратился в истинную веру</strike> стал изучать Python, и как оказалось, не зря. Питон уже давно успешно используется Гуглом в качестве одного из официальных языков разработки веб-приложений, и на сегодняшний день это один из двух языков, на котором легко пишутся приложения для Google App Engine (второй язык - Java)</p><p align=justify>Гугл предлагает <a href='http://techwork.ru/2008/08/06/free-webhosting-google-app-engine-style/' target=_blank>хостить такие приложения совершенно бесплатно</a>. Те, кто в этом шарит, может слепить весьма <a href="http://appgallery.appspot.com" target=_blank>достойные приложения</a>. Хостинг этот весьма необычный, нет привычного доступа по FTP, SSH; все делается через консоль установленного фреймворка. Статику заливать можно, использовать БД - тоже. Но это будет не привычная всем MySQL или Oracle, это какая-то своя гугловская хитрая база данных, к которой можно строить запросы с помощью GQL, в чем-то похожий на привычных нам SQL.</p><p align=justify>Дело было вечером, и вместо <a href="http://www.bloged.org/2008/01/linuxdcpp-d-link-dsl-500t.html">скачивания фильмов из сети</a>, исключительно интереса ради я решил написать на Python <a href="http://guessanumber.appspot.com">игру "Угадай число"</a> и выложить ее на бесплатный гуглохостинг. На нем все работает также стабильно, как и дома.</p><p align=justify>Интересно то, что к бесплатному хостингу от гугла запросто можно прикрутить свой домен и хостить свои разработки, не нагружая свой <a href="http://www.bloged.org/2008/05/vds.html">VDS</a>. При всем уважении к хостеру, вряд ли по надежности он сравнится с бесплатным хостингом от Google.</p><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3156059507867495809-9153097807189239537?l=www.bloged.org%2Findex.html'/></div>Edhttp://www.blogger.com/profile/16525191587358173023noreply@blogger.com0tag:blogger.com,1999:blog-3156059507867495809.post-61537077926196831632009-05-26T00:09:00.003+04:002009-05-26T00:17:10.781+04:00Управление браузером и написание сетевых ботов<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.bloged.org/uploaded_images/selenium-rc-701867.png"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 390px;" src="http://www.bloged.org/uploaded_images/selenium-rc-701855.png" border="0" alt="Selenium Remote Control" title="Selenium Remote Control" /></a><br /><p align=justify>Большинство сетевых ботов легко пишутся на Perl с использованием библиотеки WWW::Mechanize или LWP::UserAgent. Но начинаются проблемы, если целевая страница построена на AJAX, поскольку Mechanize не умеет обрабатывать Javascript.</p><p align=justify>Победить эту проблему можно, заставив обычный браузер делать то, что нужно программе. Для программистов под Windows есть модули Win32::IE::Mechanize, который худо-бедно, но все же управляет ослом и заставляет его лазить по интернету. С юниксовыми ботами несколько сложнее, поскольку браузеры приходится контролировать или через плагины, или через инъекции управляющего Javascript. </p><p align=justify>Из бесплатных инструментов мне больше всего понравились <a href='http://seleniumhq.org/projects/remote-control/' rel=nofollow>Selenium Remote Control</a> и <a href='http://wtr.rubyforge.org/' rel=nofollow>Watir</a>. Первый кроссплатформенный, может стыковаться с любым языком программирования и работает практически с любым браузерами на инъекциях Javascript. Но он довольно сложен в настройке и запросто может глючить на формах, содержащих много скриптов.</p><p align=justify>Watir же может управлять только лисой, и только через <a href='http://wtr.rubyforge.org/install.html' target=_blank>плагин</a>, который доступен для скачивания на официальном сайте. Watir не очень хорошо работает с фреймами, но зато не засоряет код полученной страницы дополнительными скриптами. Правда, у этой системы есть один недостаток, она работает только с Ruby (есть еще порт на Java, проект Watij).</p><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3156059507867495809-6153707792619683163?l=www.bloged.org%2Findex.html'/></div>Edhttp://www.blogger.com/profile/16525191587358173023noreply@blogger.com0tag:blogger.com,1999:blog-3156059507867495809.post-18627775641720317582009-05-11T22:23:00.003+04:002009-05-11T23:17:41.984+04:00Экспорт баз MySQLПри переносе баз MySQL с одного сервера на другой я с удивлением обнаружил, что хранимые процедуры и функции не перенеслись, а остальные структуры перенеслись корректно. Оказывается, mysqldump по умолчанию не экспортирует функции и процедуры, и для того, чтобы их вынести в дамп, параметры экспорта надо указывать отдельно:<br /><br /><b>mysqldump -u username -p db_name --routines --extended-insert >dump.sql</b><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3156059507867495809-1862777564172031758?l=www.bloged.org%2Findex.html'/></div>Edhttp://www.blogger.com/profile/16525191587358173023noreply@blogger.com0tag:blogger.com,1999:blog-3156059507867495809.post-86379679810992729332009-04-08T23:24:00.003+04:002009-04-08T23:44:06.924+04:00Как пережать видео из 3gp в AVI<p align=justify>Многие мобильные телефоны позволяют снимать видео на встроенную камеру и сохранять его в формате 3gp. Мой любимый mplayer отказывается показывать видео в формате 3gp, а посмотреть хотелось бы.</p><p align=justify>Для работы с видео и звуком под Linux есть как минимум 2 классных инструмента, mencoder и ffmpeg. И чтобы посмотреть видео, снятое на телефоне SonyEricsson K750i, я его преобразовал в формат avi:</p><p align=justify><pre><b>mencoder 007.3gp -ovc lavc -lavcopts vcodec=msmpeg4v2 -oac mp3lame -lameopts vbr=3 -o 007.avi</b></pre></p><p align=justify>Размер файла при этом вырос в 2 раза; и видео, и звук оказались в приемлемом качестве. Но точно такой же финт не сработал с видео, отснятым на телефон Nokia 6223, там используется какой-то нестандартный битрейт</p><p align=justify>Можно попробовать вылечить так:</p><p align=justify><pre><b>mencoder 007.3gp -ovc lavc -lavcopts vcodec=msmpeg4v2 -oac mp3lame -srate 8000 -lameopts vbr=3 -o 007.avi</b></pre></p><p align=justify>Так выходной файл все-таки получился, но звук был отвратительным. Нельзя было разобрать ни слова, звук стал более быстрым и тональность голосов изменилась</p><p align=justify>Я попробовал последний вариант:</p><p align=justify><pre><b>ffmpeg -i 007.3gp -f avi -acodec libmp3lame 007.avi</b></pre></p><p align=justify>Это сработало, голос стал узнаваем, но по-прежнему качество звука в декодируемых с нокии клипах оставляет желать лучшего.</p><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3156059507867495809-8637967981099272933?l=www.bloged.org%2Findex.html'/></div>Edhttp://www.blogger.com/profile/16525191587358173023noreply@blogger.com0tag:blogger.com,1999:blog-3156059507867495809.post-74929865499949622832009-04-06T13:05:00.003+04:002009-04-06T13:13:14.863+04:00Amazon не будет принимать платный трафик в US и CA<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.bloged.org/uploaded_images/amazon-718027.jpg"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 350px; height: 300px;" src="http://www.bloged.org/uploaded_images/amazon-718018.jpg" border="0" alt="Amazon logo" title="Amazon больше не принимает платный трафик" /></a><br />С 1 мая амазон прекращает прием платного трафика для продаж в США и Канаде. Вот такое письмо я получил сегодня:<br /><br />Dear Amazon Associate<br /><br /><p align=justify>We're writing to let you know about a change to the Amazon Associates Program. After careful review of how we are investing our advertising resources, we have made the decision to no longer pay referral fees to Associates who send users to www.amazon.com, www.amazon.ca, or www.endless.com through keyword bidding and other paid search on Google, Yahoo, MSN, and other search engines, and their extended search networks. If you're not sure if this change affects you, please visit <a href='http://www.amazon.com/gp/r.html?R=QG4977NRI0MM&C=2AMN0WLYRFKJM&H=1LVNZTEKI6KCUWJTYOPAYEIMKQQA&T=C&U=https%3A%2F%2Faffiliate-program.amazon.com%2Fgp%2Fassociates%2Fpromo%2Fpaidsearch' rel=nofollow target=_blank>this page</a> for FAQs.</p><p align=justify>As of May 1, 2009, Associates will not be paid referral fees for paid search traffic. Also, in connection with this change, as of May 1, 2009, Amazon will no longer make data feeds available to Associates for the purpose of sending users to the Amazon websites in the US or Canada via paid search.</p><p align=justify>This change applies only to the Associates programs in North America. If you are conducting paid search activities in connection with one of Amazon's Associates Programs outside of the US and Canada, please refer to the applicable country's Associates Program Operating Agreement for relevant terms and conditions.</p><p align=justify>We appreciate your continued support and participation in this advertising Program. If you have questions or concerns, please write to us by using the <a href='http://www.amazon.com/gp/r.html?R=QG4977NRI0MM&C=2AMN0WLYRFKJM&H=WFOM6NVCRUDAZ5OA6FXGH7JGS60A&T=C&U=https%3A%2F%2Faffiliate-program.amazon.com%2Fgp%2Fassociates%2Fcontact' rel=nofollow target=_blank>Contact Us</a> form available on Associates Central.</p><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3156059507867495809-7492986549994962283?l=www.bloged.org%2Findex.html'/></div>Edhttp://www.blogger.com/profile/16525191587358173023noreply@blogger.com0tag:blogger.com,1999:blog-3156059507867495809.post-41128915860610908572009-04-03T16:49:00.002+04:002009-04-03T16:52:45.406+04:00Все-таки оптимистов больше, чем пессимистов<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.bloged.org/uploaded_images/optimizm-735005.jpg"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 300px;" src="http://www.bloged.org/uploaded_images/optimizm-735002.jpg" border="0" alt="Оптимистов больше, чем пессимистов. Доказано Google Trends" /></a><br />Оптимистов больше, чем пессимистов. Доказано <a href='http://www.google.com/trends?q=%22half+full%22%2C%22half+empty%22&ctab=0&geo=all&date=all&sort=1' rel=nofollow target=_blank>Google Trends</a><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3156059507867495809-4112891586061090857?l=www.bloged.org%2Findex.html'/></div>Edhttp://www.blogger.com/profile/16525191587358173023noreply@blogger.com2tag:blogger.com,1999:blog-3156059507867495809.post-70481976830790763932009-04-01T12:48:00.003+04:002009-04-01T13:02:25.893+04:00Оффтопик: Nirvana, Rape Me. Интересные переделки известного хитаЕсли вам чуждо творчество группы Nirvana - проходите мимо, этот пост не для вас. Здесь я решил собрать самые интересные переделки легендарной песни Rape Me. <br /><br />Например, некто Ричард Сыр, смог превратить эту серьезную песню в довольно веселую вещь:<br /><a href='http://www.youtube.com/watch?v=U0wmYJ3yj0c' rel=nofollow target=_blank>Nirvana video synced with Richard Cheese cover</a><br /><br />Никогда раньше не видел, как девушки исполняют эту песню. Этот ролик мне показался интересным:<br /><object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/OEZdCISwNdM&hl=en&fs=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/OEZdCISwNdM&hl=en&fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object><br /><br />Ну и на закуску:<br />The String Quartet Tribute To Nirvana - Rape Me<br /><object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/bkgzVoYgSOw&hl=en&fs=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/bkgzVoYgSOw&hl=en&fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object><br /><br />Piano Instrumental - Nirvana - Rape Me<br /><object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/21zi3JQwfbg&hl=en&fs=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/21zi3JQwfbg&hl=en&fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3156059507867495809-7048197683079076393?l=www.bloged.org%2Findex.html'/></div>Edhttp://www.blogger.com/profile/16525191587358173023noreply@blogger.com0tag:blogger.com,1999:blog-3156059507867495809.post-49155478310377853682009-03-15T23:15:00.004+03:002009-03-15T23:26:49.794+03:00Как получить список дат в mysql<p align=justify>Однажды мне потребовалось получить список дат на каждый день 2009 года. Как оказалось, в mysql такой список получить очень просто.</p><p align=justify>Для этого нужна всего лишь любая таблица, в которой есть не меньше 365 строк. У меня такая таблица была, и называется она games. Скрипт выглядит так:</p><pre><br />SET @rownum:=0;<br />select adddate('2008-12-31',interval @rownum:=@rownum+1 DAY) next_date from games limit 0,365;</pre><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3156059507867495809-4915547831037785368?l=www.bloged.org%2Findex.html'/></div>Edhttp://www.blogger.com/profile/16525191587358173023noreply@blogger.com0tag:blogger.com,1999:blog-3156059507867495809.post-50112771524190444782009-03-06T16:25:00.002+03:002009-03-06T16:57:54.480+03:00Как экспортировать данные в формате ZIP из php-скриптаВсе просто, можно использовать класс zipfile, который использует phpMyAdmin.<br />Выглядит это примерно так:<br /><br /><pre><br /><?php<br /> require_once("zip.lib.php");<br /> $zip = new zipfile();<br /> $zip->addFile($some_text, 'file.txt');<br /> $handle = fopen("file.zip","w");<br /> fwrite($handle,$zip->file());<br /> fclose($handle);<br />?><br /></pre><br /><br />Все, в текущей директории файл file.txt будет упакован в file.zip. Код будет работать и в php4, и в php5. В php должна быть включена поддержка zlib.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3156059507867495809-5011277152419044478?l=www.bloged.org%2Findex.html'/></div>Edhttp://www.blogger.com/profile/16525191587358173023noreply@blogger.com0tag:blogger.com,1999:blog-3156059507867495809.post-9612629954815979672009-02-21T23:57:00.002+03:002009-02-22T00:09:30.892+03:00OpenSuSe 11.1: Самый глючный дистрибутив всех времен и народов<img src="http://en.opensuse.org/skins/opensuse/images/common/geeko.jpg" title="OpenSuSe Logo" alt="OpenSuSe Logo" /><br /><p align=justify>Не так давно я <a href="http://www.bloged.org/2008/07/11-opensuse.html" target=_blank>обновлял систему с OpenSuSe 11.0</a>, как обычно, запустив обновление. После него отказались работать X, mplayer не показывал фильмы в fullscreen mode и творилось много неприятного. В связи с чем было принято решение снести все нафиг и поставить OpenSuSe 11.1, ведь в прошлый раз все произошло безболезненно.</p><p align=justify>Однако, проблемы начались сразу после установки. KDE4 оказался зело глючный, по крайней мере в без напильника многое работать не стало. Например, kget отказывался скачивать поставленные в очередь файлы, akregator рушился при добавлении RSS лент в ридер.</p><p align=justify>В связи с чем я и переставил систему на SuSe 11.1 с KDE 3.5. Но на этом мои злоключения не закончились. Хроническая болезнь всех видеокарт ATI продолжается вместе с любым дистрибутивом линукса. Каждая инсталляция превращается в головную боль, поскольку система с упорством маньяка ставит глюкавый драйвер radeonhd, вместо родного ATI-шного fglrx.</p><p align=justify>Эта проблема непобедима, поскольку драйвера видеокарт ATI содержат какой-то мегасекретный код, который они и прячут как могут. Т.е. никогда мы не увидим исходников дров, и они не будут включены в дистрибутивы линуксов из-за различий в лицензионном соглашении.</p><p align=justify>Но это все лирика. Установка драйверов <a href="http://www.bloged.org/2008/02/windows-opensuse.html" target=_blank>старым добрым способом</a>, описанным для SuSe 10.3, не дала желаемый результат. Драйвер встал, но 3D ускорение работало из рук вон плохо.<br />Симптомы были такие:</p><br />> glxinfo | grep direct<br />direct rendering: Yes<br /><br />glxgears показывал порядка 300 кадров в секунду (что для карты с ускорителем и для маленького окошка слишком мало).<br /><br />fgl_glxgears не запускался, рушился с вот такой ошибкой:<br />X Error of failed request: GLXUnsupportedPrivateRequest<br /><br />Лечится просто, надо в .bashrc дописать вот такую строчку:<br />export LD_LIBRARY_PATH=/usr/X11R6/lib:$LD_LIBRARY_PATH<br />и перелогиниться после этого.<br /><p align=justify></p><p align=justify>Сразу заработал fgl_glxgears и Quake3, и жизнь снова стала прекрасна и замечательна... казалось бы.</p><p align=justify>Второй серьезный баг был с настройкой параметров клавиатуры. После запуска Sax2 слетели нафиг настройки, оставался или только русский язык, или только латиница. Лечится следующим образом:</p><p align=justify>В файле /etc/X11/xinit/xinitrc.common надо закомментировать строчки 103 и 104:</p><br />xdpyinfo | grep -q "X.Org version: 6.9.0" || \ <br /> setxkbmap -print | xkbcomp - $DISPLAY<br /><p align=justify>Это сильно облегчит жизнь при настройке клавиатуры через Sax2, официально зарегистрированный баг SuSe 11.1: <a href="https://bugzilla.novell.com/show_bug.cgi?id=432627" rel=nofollow>https://bugzilla.novell.com/show_bug.cgi?id=432627</a></p><p align=justify>Ну и еще одна серьезная пакость была в этом дистрибутиве, после установки SuSe 11.1 перестал работать звук. Эти товарищи включили кривой набор пакетов ALSA, в результате чего и звук пропал. Лечится обновлением драйверов до последней версии:</p><br />zypper ar http://download.opensuse.org/repositories/multimedia:/audio/openSUSE_11.1/ multimedia<br /><br />zypper install alsa alsa-utils alsa-tools alsa-firmware libasound2<br /><br />zypper rr multimedia<br /><br />далее в зависимости от ядра, выполняются следующие команды:<br /><br />zypper ar http://download.opensuse.org/repositories/multimedia:/audio:/KMP/openSUSE_11.1/ multimedia<br /><br />zypper install alsa-driver-kmp-default<br /><br />zypper rr multimedia<br /><br />(для ядра kernel 2.6.27.7_9.1-1.1-default i386 or x86_64 GNU/Linux (openSUSE-11.1) <br /><br />или <br /><br />zypper ar http://download.opensuse.org/repositories/multimedia:/audio:/KMP/openSUSE_11.1/ multimedia<br /><br />zypper install alsa-driver-kmp-pae<br /><br />zypper rr multimedia<br /><br />(для ядра с kernel 2.6.27.7_9.1-1.1-pae i386 GNU/Linux (openSUSE-11.1)<br /><br /><p align=justify>В общем, дистрибутив получился просто отвратительным, без напильника, гугления и танцов с бубном ее не настроить. Новичкам такой дистрибутив не рекомендую.</p><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3156059507867495809-961262995481597967?l=www.bloged.org%2Findex.html'/></div>Edhttp://www.blogger.com/profile/16525191587358173023noreply@blogger.com2tag:blogger.com,1999:blog-3156059507867495809.post-75543542262787405102009-02-13T01:05:00.006+03:002009-02-13T01:36:38.481+03:00И снова о прокси<p align=justify>Я уже писал о том, <a href="http://www.bloged.org/2007/12/blog-post_12.html">как превратить VDS в прокси SOCKS5</a>, но этот способ не всегда удобен. С одной стороны, никакого софта ставить не надо; но с другой стороны, перед использованием proxy обязательно соединяться по ssh с VDS. И в случае, если у VDS есть <a href='http://www.bloged.org/2008/02/linux-ip.html'>несколько IP адресов на одной сетевой карте</a>, то использовать сможете только один из них.</p><p align=justify>Для полноценного использования своего <a href='http://www.bloged.org/2008/05/vds.html'>VDS</a> в качестве прокси-сервера можно использовать <a href='http://www.3proxy.ru/' rel="nofollow" target=_blank>3proxy</a>, который легко собирается на VDS</p><p align=justify>Если вы собираетесь использовать этот прокси с каких-то фиксированных IP адресов, мой конфиг вам в помощь:</p><pre><br />#!/usr/local/bin/3proxy<br />nserver 1.2.3.4<br />nserver 1.2.3.5<br />timeouts 1 5 30 60 180 1800 15 60<br />daemon<br />log /usr/local/etc/3proxy/logs/3proxy.log D<br />logformat "L%d-%m-%Y %H:%M:%S %z %N.%p %E %U %C:%c %R:%r %O %I %h %T"<br />archiver gz /bin/gzip %F<br />rotate 3<br />chroot /usr/local/jail<br />setgid 65535<br />setuid 65535<br /><br />auth iponly<br />flush<br />allow * 11.12.13.14 * *<br />proxy -i1.2.7.9 -e1.2.7.10 -p8089 -n -a<br /><br />auth iponly<br />flush<br />allow * 11.12.13.14 * *<br />proxy -i1.2.7.9 -e1.2.7.9 -p8090 -n -a</pre><br /><p align=justify>В этом примере демон 3proxy будет слушать порты 8089 и 8090 на айпишнике 1.2.7.9. Использовать получившийся анонимный http прокси можно только с IP адреса 11.12.13.14. На официальном сайте есть толковый мануал на русском, с примерами. Важно только не забыть поставить запуск прокси при перезагрузке VDS, например, в rc.local прописать вот такую строчку:</p><pre>nohup /usr/local/bin/3proxy /usr/local/etc/3proxy.cfg >/dev/null 2>/dev/null &</pre><br /><p align=justify><offtopic><br/>Я рад, что и <a href="http://nobyru.blogspot.com">мои друзья</a> потихоньку заводят свои блоги, организуют новые <a href="http://reviews.bloged.org/me/">проекты</a>. Сама идея собрать отзывы о путешествиях в одно место мне очень близка к сердцу, поскольку у меня у самого есть аналогичный <a href="http://travel.bloged.org">проект</a>; но в данном случае, под хороший сайт и места на своем VDS не пожалею.<br/></offtopic></p><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3156059507867495809-7554354226278740510?l=www.bloged.org%2Findex.html'/></div>Edhttp://www.blogger.com/profile/16525191587358173023noreply@blogger.com0tag:blogger.com,1999:blog-3156059507867495809.post-7783093362537129182009-02-01T21:21:00.002+03:002009-02-01T21:31:16.303+03:00Прикручиваем Paypal для оплаты<p align=justify>Одной из самых популярных платежных систем в буржунете является <a href="http://www.bloged.org/2008/11/paypal.html">Paypal</a>. Поэтому желающие прикрутить ее к своему сайту для оплаты товаров и услуг встречается очень часто на любом фрилансерском сайте, например, на <a href="http://www.bloged.org/labels/RentACoder.html">RentACoder</a>. Но так, как россиянам Paypal разрешает иметь <a href="https://www.paypal.com/cgi-bin/webscr?cmd=_display-approved-signup-countries-outside&" rel="nofollow">только send only аккаунты</a>, у нас эта платежная система не прижилась.</p>Сделать кнопку «Buy now» совсем не сложно, это простейшая форма вот такого вида:<br /><br /><form action="https://www.paypal.com/cgi-bin/webscr" method="post"><br /><input type="hidden" name="cmd" value="_xclick"><br /><input type="hidden" name="business" value="paypal@site.com"><br /><input type="hidden" name="item_name" value="Buy Online Access to BlahBlahBlah.com"><br /><input type="hidden" name="amount" value="10.00"><br /><input type="hidden" name="no_note" value="1"><br /><input type="hidden" name="currency_code" value="USD"><br /><input type="hidden" name="bn" value="PP-BuyNowBF"><br /><input type="hidden" name="custom" value="Some Value"><br /><input type="hidden" name="return" value="http://www.site.com/payments/pp_success.php"><br /><input type="hidden" name="notify_url" value="http://www.site.com/payments/pp_notify.php"><br /><input type="hidden" name="rm" value="POST"><br /><input type="submit" name="submit" value="Buy Now"><br /></form><br /><p align=justify>Когда пользователь произведет оплату, он будет перенаправлен на URL, указанный в параметре return. После этого Пейпал сам отправит уведомление о поступившем платеже на notify_url, только эти данные подлежат тщательной проверке, поскольку любому злоумышленнику не составит особого труда сформировать POST-запрос на notify_url. Поэтому полученные данные надо перезапросить у paypal еще раз, добавив к запросу параметр cmd со значением _notify-validate. И если paypal подтвердит совершенный платеж, транзакцию можно считать завершенной.</p><p align=justify>Для сторонних разработчиков Paypal предусмотрел специальный сервис <a href="https://developer.paypal.com/us/cgi-bin/devscr?cmd=_logout" rel="nofollow">Paypal Sandbox</a>, который позволяет тестировать весь процесс приема платежей, с одним небольшим ограничением. В paypal sandbox не работает IPN (Instant Payment Notification), когда уведомление о платеже отправляется на notify_url. Для отладки скриптов по обработке IPN в песочнице сделали отдельный инструмент <a href="https://developer.paypal.com/us/cgi-bin/devscr?cmd=_ipn-link-session" rel="nofollow">Instant Payment Notification (IPN) simulator</a>.</p><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3156059507867495809-778309336253712918?l=www.bloged.org%2Findex.html'/></div>Edhttp://www.blogger.com/profile/16525191587358173023noreply@blogger.com7tag:blogger.com,1999:blog-3156059507867495809.post-76231617076772252832009-01-26T21:24:00.006+03:002009-01-26T22:32:25.928+03:00ICQ? Jabber? Skype!<p align=justify>Для общения с коллегами я раньше использовал только ICQ. Но с тех пор, как у меня стали появляться заказчики с <a href="http://www.bloged.org/2008/12/rentacoder.html">RentACoder</a>, мне пришлось использовать и другие способы связи.</p><p align=justify>Удивительно, но аська популярна в основном у нас, на пространстве бывшего СССР. Большинство буржуинов из моего контакт-листа используют <a href="http://messenger.yahoo.com" rel=nofollow>Yahoo! Messenger</a>, значительная часть пользуется <a href="http://messenger.live.com/" rel=nofollow>MSN Messenger</a> А вот Jabber'ом пользуются единицы, несмотря на все преимущества этого протокола обмена сообщениями.</p><p align=justify>Компания AOL частенько портит кровь пользователям альтернативных клиентов ICQ, меняя протокол сообщений, что приводит к неработоспособности клиентов вроде QIP. Последняя гадость от AOL случилась 21 января, и затронула значительную часть людей из моего контакт-листа. Поэтому я и стараюсь перевести все свои контакты на другие протоколы обмена сообщениями.</p><p align=justify>Пока мне больше всего нравится Jabber, но им пользуются единицы. Есть даже Jabber-клиенты с возможностью голосового чата, например <a href="http://www.google.com/talk/" rel=nofollow>Google Talk</a> и <a href="http://sourceforge.net/projects/jabbin" rel=nofollow>Jabbin</a>. Ho так как я пользуюсь <a href="http://www.bloged.org/2008/07/11-opensuse.html">OpenSUSE</a>, Google Talk мне не подходит. А Jabbin как проект, к сожалению, заглох. Последнее обновление программы было в 2006 году. Нормальных джаббер-клиентов с поддержкой голосового или видео чата не нашел, поэтому и пришлось поставить <a href="http://www.skype.com/intl/ru/" rel=nofollow>Skype</a> и <a href="http://gizmo5.com/pc/" rel=nofollow>Gizmo</a>.</p><p align=justify>Голосовой чат бесспорно, удобен. Не надо топтать клаву и постоянно пялиться в монитор. Голосовое и видеообщение с компьютера на компьютер и там, и там бесплатное. Ну а за звонок на обычный телефон не грех и заплатить.</p><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3156059507867495809-7623161707677225283?l=www.bloged.org%2Findex.html'/></div>Edhttp://www.blogger.com/profile/16525191587358173023noreply@blogger.com4tag:blogger.com,1999:blog-3156059507867495809.post-433502843619564852009-01-19T22:02:00.004+03:002009-01-19T22:43:08.468+03:00О пользе nginx<p align=justify>Вот уже болльше 2-х лет я <a href="http://www.bloged.org/2008/05/vds.html">пользуюсь хостингом от FirstVDS и MiniVDS</a>, причем для моих небольших нужд вполне хватает самых дешевых тарифов, на которых дается всего 64 Мб RAM. Свободной памяти у меня практически никогда не бывает, но все сервисы стабильно работают.</p><p align=justify>Я всерьез задумался, а есть ли смысл включать nginx. Кроме статики, у меня еще есть куча скриптов; причем php работает как модуль apache. Да и сам nginx тоже будет висеть в памяти и есть ресурсы.</p><p align=justify>Удивительно, но после того, как я у себя включил nginx, apache стал есть меньше памяти. И как выяснилось, это заслуга nginx.</p><p align=justify>Зачастую апач генерит страницу быстрее, чем отдает ее клиенту; особенно, если клиент имеет не очень хороший канал. И пока он ее отдает, процесс висит в памяти и жрет системные ресурсы. Вот тут и приходит на помощь nginx, который работает как прокси. Он мухой забирает все, что сгенерил апач, и отдает все это добро клиенту. Апач же, законив свою грязную работу, спокойно умирает.</p><p align=justify>Включить nginx в панели ISPmanager можно одним кликом мыши, и уже через пару-тройку минут можно будет видеть результат. У меня, правда, процесс не совсем корректно отработал, nginx стартовал, а апаче почему-то нет. Пришлось апач запустить вручную. И еще, если <a href="http://www.bloged.org/2008/02/blog-post.html">автоматически созданные поддомены</a> сделаны вручную через mod_rewrite, возможно некорректное отоборажение картинок на сабах. В этом случае придется вручную править правила раздачи картинок с поддоменов для nginx</p><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3156059507867495809-43350284361956485?l=www.bloged.org%2Findex.html'/></div>Edhttp://www.blogger.com/profile/16525191587358173023noreply@blogger.com0tag:blogger.com,1999:blog-3156059507867495809.post-83325356660999979152009-01-12T14:44:00.002+03:002009-01-12T14:50:16.443+03:00Комикс о жизни программистов, смотреть всем!<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.bloged.org/uploaded_images/money-or-life-746611.jpg"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 333px;" src="http://www.bloged.org/uploaded_images/money-or-life-746606.jpg" border="0" alt="Почти правда о жизни программистов" title="Похоже не правду" /></a><br />Честно сперто с <a href="http://www.codecomics.com" target=_blank>codecomics.com</a><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3156059507867495809-8332535666099997915?l=www.bloged.org%2Findex.html'/></div>Edhttp://www.blogger.com/profile/16525191587358173023noreply@blogger.com1tag:blogger.com,1999:blog-3156059507867495809.post-23064397224905365982009-01-08T02:36:00.004+03:002009-03-15T23:28:22.770+03:00Как сбросить пароль в mysqlИногда бывают ситуации, когда рутовый пароль на базу MySQL <strike>проебали</strike> где-то потерялся, и его надо срочно перезадать. Если есть доступ к shell на сервере, то сделать это достаточно просто:<br /><br />1. Останавливаем mysqld:<br /><br /><b>/etc/init.d/mysqld stop</b><br /><br />2. Запускаем mysqld без проверки прав доступа:<br /><br /><b>mysqld_safe --skip-grant-tables &</b><br /><br />3. Заходим под рутом и перебиваем пароль:<br /><br /><b>mysql -u root -D mysql<br />mysql> update user set password=password('new_password') where user='root';</b><br /><br />4. Обновляем права доступа:<br /><br /><b>flush privileges;</b><br /><br />5. Выходим, убиваем mysqld и запускаем его снова:<br /><br /><b>mysql> exit;<br />/etc/init.d/mysqld stop<br />/etc/init.d/mysqld start</b><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3156059507867495809-2306439722490536598?l=www.bloged.org%2Findex.html'/></div>Edhttp://www.blogger.com/profile/16525191587358173023noreply@blogger.com0tag:blogger.com,1999:blog-3156059507867495809.post-43327997015363805072009-01-06T18:10:00.002+03:002009-01-06T18:22:25.472+03:00Красота-то какая...<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.bloged.org/uploaded_images/winter-744993.jpg"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 300px;" src="http://www.bloged.org/uploaded_images/winter-744921.jpg" border="0" alt="Настоящая русская зима" title="Бросайте все, езжайте в лес. Тут здорово!" /></a><br /><br />Иногда надо отдыхать. А сейчас самое время, чтобы вырваться в лес и покататься на лыжах. Приятного отдыха.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3156059507867495809-4332799701536380507?l=www.bloged.org%2Findex.html'/></div>Edhttp://www.blogger.com/profile/16525191587358173023noreply@blogger.com0tag:blogger.com,1999:blog-3156059507867495809.post-10150592870584104592009-01-05T00:33:00.004+03:002009-01-05T00:40:07.321+03:00Парсинг поисковых систем<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.bloged.org/uploaded_images/yahoo_logo-784373.jpg"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 350px; height: 245px;" src="http://www.bloged.org/uploaded_images/yahoo_logo-784365.jpg" border="0" alt="Yahoo! Logo" title="Яха - тормозной, но дружелюбный поисковик" /></a><p align=justify>Обычно поисковые системы не позволяют себя парсить простым смертным. Например, великий и ужасный Google банит айпишник на несколько часов, если делать запросы слишком часто. А еще гугл иногда выдает свою аццкую капчу, и иногда меняет форматирование своей выдачи, что осложняет жизнь нашим коллегам.</p><p align=justify>Однако, есть и дружелюбные поисковики, которые вполне <a href ='http://developer.yahoo.com/search/web/webSearch.html' rel=nofollow>официально разрешают себя парсить</a>. Всего лишь надо зарегистрировать аккаунт на Yahoo, получить app id key и настроить свой парсер, благо <a href='http://www.bloged.org/2008/11/goolge-ajax-api.html' target=_blank>API</a> под него доступно там же на самых популярных языках программирования.</p><p align=justify>Никаких пауз между запросами, никакой подделки юзерагента или сбрасывания cookie делать не надо, все работает быстро и надежно. Выдачу можно забирать в XML, что значительно упрощает парсинг. Однако не стоит забывать, что в термсах Yahoo прописаны ограничения: не более 5000 запросов с одного IP. Как видите, ничто не запрещает использовать все доступные IP адреса для получения желаемого результата.</p><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3156059507867495809-1015059287058410459?l=www.bloged.org%2Findex.html'/></div>Edhttp://www.blogger.com/profile/16525191587358173023noreply@blogger.com0tag:blogger.com,1999:blog-3156059507867495809.post-78583699459788226782008-12-11T00:18:00.010+03:002009-03-20T11:46:28.722+03:00Особенности работы с RentACoder<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.bloged.org/uploaded_images/rac-794351.jpg"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 229px;" src="http://www.bloged.org/uploaded_images/rac-794349.jpg" border="0" alt="Rent A Coder" title="Rent A Coder: удаленная работа для программиста" /></a><br /><p align=justify>Большинство дорогостоящих и интересных проектов забирают себе топовые кодеры. Новичкам серьезный проект мало кто доверит, поэтому начать придется со всякой мелочи, чтобы в конце концов выйти на серьезные проекты с хорошей стоимостью.</p><p align=justify>Чтобы рядом с вашими бидами в системе засиял заветный значок Top Coder, надо выполнить следующие условия:</p><br /><li>Надо выполнить не менее трех проектов на RentACoder</li><li>Набрать не менее 5000 очков</li><li>Иметь средний рейтинг не ниже 9 баллов</li><li>Не иметь ни одной плохо оцененной работы (рейтинг ниже 4 баллов)</li><br /><p align=justify>После выполнения каждой работы заказчик и кодер имеют возможность оценить друг друга по десятибальной шкале, и этот рейтинг очень важен. Он влияет на расчет количества очков в общем зачете кодеров.</p><p align=justify>Количество набранных очков рассчитывается по следующей схеме. Берется сумма законченного проекта и умножается на рейтинг. Т.е. 5000 очков можно получить выполнив проекты на сумму $500 с рейтингом 10, или выполнив проекты на сумму $1000 с рейтингом 5.</p><p align=justify>Заказчики так же получают свою оценку. Если кодеру не понравилось поведение заказчика, постановка задачи или еще что-то, то у заказчика средний рейтинг понизится. Но это не единственный показатель, на который смотрит кодер при оценке своего заказчика.</p><p align=justify>Например, если заказчик выставил Bid Request и не выбрал ни одного кодера для его выполнения, то карма у заказчика портится. В общем, понятно почему, он же отнял драгоценное время многих кодеров на то, чтобы прочитать его запрос, и дать свой бид. Этот показатель называется Non-action Ratio, на него тоже стоит обращать внимание прежде, чем браться за bid request.</p><p align=justify>Еще одна важная деталь. Очень часто заказчик сомневается в квалификации кодера, если он с ним ни разу не работал. Поэтому зачастую он просит демо-версию программы/скрипта/сервиса. Чтобы наглядно показать заказчику, что может ваш скрипт, вам понадобится свой <a href="http://www.bloged.org/2008/05/vds.html" target=_blank>хостинг</a>. Shared хостинг сразу отпадает, поскольку хостер вас может вежливо попросить съехать, если ваш скрипт будет мешать другим клиентам. Dedicated server для демо целей слишком дорог, его лучше использовать под готовые серьезные проекты. Вам будет достаточно <a href="http://firstvds.ru/index.html?from=32008" rel="nofollow" target=_blank>VDS от FirstVDS.ru</a>, поскольку ничего другого сопостовимого по соотношению цена/качество вы не найдете.</p><br />См. также по теме: <a href='http://www.bloged.org/2008/11/rentacoder.html'>RentACoder: удаленная работа для программиста</a><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3156059507867495809-7858369945978822678?l=www.bloged.org%2Findex.html'/></div>Edhttp://www.blogger.com/profile/16525191587358173023noreply@blogger.com2tag:blogger.com,1999:blog-3156059507867495809.post-10877550804345568062008-11-21T20:27:00.003+03:002008-11-21T20:43:14.832+03:00Paypal заговорил по-русски<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.bloged.org/uploaded_images/paypal-719203.jpg"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 400px;" src="http://www.bloged.org/uploaded_images/paypal-719197.jpg" border="0" alt="Paypal заговорил по-русски" title="Paypal наконец-то заговорил по-русски" /></a><br /><br />Ну что же, теперь среди доступных языков в интерфейсе Paypal появился и русский. Для того, чтобы проклятые буржуины перестали нас считать страной третьего мира, осталось сделать совсем немного: включить возможность приниема платежей для граждан бывшего СССР.<br /><br />Для работы с Paypal вполне подходят <a href="http://www.bloged.org/2007/09/blog-post_19.html">карты Visa Virtuon и Visa E-C@rd</a> банков ВТБ и ВТБ24; не тратьте деньги на более дорогие карты, поскольку <a href="http://www.bloged.org/2008/03/visa-virtuon-vs-visa-classic.html">карты Visa Classic от ВТБ и ВТБ24 с Paypal не работают</a>.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3156059507867495809-1087755080434556806?l=www.bloged.org%2Findex.html'/></div>Edhttp://www.blogger.com/profile/16525191587358173023noreply@blogger.com2tag:blogger.com,1999:blog-3156059507867495809.post-75265758835753549062008-11-19T14:52:00.008+03:002008-12-10T22:54:40.946+03:00RentACoder: удаленная работа для программиста<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.bloged.org/uploaded_images/rac-794351.jpg"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 229px;" src="http://www.bloged.org/uploaded_images/rac-794349.jpg" border="0" alt="Rent A Coder" title="Rent A Coder: удаленная работа для программиста" /></a><br /><p align=justify>Сейчас многие программисты попадают под сокращение в связи с наступлением глобального экономического кризиса. Но если вам так и не удалось <a href="http://www.bloged.org/2007/12/blog-post.html" target=_blank>найти нормальную работу</a>, то стоит попробовать поработать на самого себя.</p><p align=justify>Обязательное условие — приличное владение английским языком, поскольку большинство заказчиков англоязычные. Регистрируемся <a href="http://www.bloged.org/go.php?go=rentacoder" target=_blank>здесь</a> как кодер, настраиваем свое резюме, предпочтения, опыт работы и обязательно подписываемся на RSS сообщения с новыми бидами.</p><p align=justify>Система работает так. Заказчик выставляет свою задачу, и описывает ее например так:</p><i><p>Hello,</p><p align=justify>We currently have a functioning school management website. We need a coder who will take all static text on the website and make it to be loaded from the database. We have a page in admin where we have 'pages', we need this to be extended to include all text on the entire website. Additionally, it should be possible to add new pages and they appear in a top menu.</p><p align=justify>Further, there are two tiny changes we also need:</p><br /><p align=justify>1. We have a comment text field. It should be made bigger using CSS<br />2. The list of 'events' displays on the frontpage. Currently about 10 are displayed. We need this list expanded to show 40</p></i><p align=justify>Заказчик выбирает ценовую категорию для проекта (например, Project Type: Very Small Business Project: under $100(USD)) и может выставить максимальный приемлемый для себя бид (в данном случае Max Accepted Bid: $60.00 (USD)).</p><p align=justify>Кодеры читают задачу, и если их она устраивает, отвечают на нее своим бидом. Заказчик смотрит на биды кодеров, историю их работы, рейтинги и прочие факторы, и решает, а работать ли дальше. Он может отказаться от своего предложения (cancel), либо выбрать чей-то бид.</p><p align=justify>Как правило, другие подробности работы заказчик описывает кодеру после того, как кодер принял бид. Заказчик переводит деньги в пользу RentACoder (escrow), и они после выполнения работы и принятия ее заказчиком, переходят в пользу кодера (за вычетом комиссии системы).</p><p align=justify>Есть несколько тонкостей в работе. Если кодер в течение 24 часов после принятия бида заказчиком понимает, что по какой-то причине не сможет справиться с задачей, он обязан уведомить заказчика об этом и подать заявку на отказ от задачи. Это так называемый grace period, в течение которого кодер может безболезненно для себя и для заказчика отказаться от работы, не получив негативного рейтинга. Заказчику при этом возвращаются все переведенные в пользу RentACoder деньги.</p><p align=justify>Если кодер все сделал вовремя, результат работы (без исключений) должен быть прикреплен к задаче для проверки и принятия ее закачиком. После успешного принятия работы кодер получает свои деньги, работа добавляется в портфолио и кодер получает рейтинг. Заказчик также получает рейтинг.</p><p align=justify>Если же закачик или кодер чем-то недовольны, все споры решаются независимым арбитражом.</p><p align=justify>Комиссия системы составляет 15%, но не менее 3 USD. Выплаты производятся по тому графику, который выбирает кодер (устанавливается минимальная сумма для выплаты (например, $100), и выбирается график выплат — в начале следующего месяца либо по окончании двухнедельного срока).</p><p align=justify>Выплаты производятся 4-мя способами:<br /><li>перевод на банковский счет (этот способ годится и для россиян)</li><li>перевод Western Union<br /><li>выплаты на карту Payoneer Prepaid Mastercard (если ее нет, они ее сделают и вышлют)</li><li>выплаты в Paypal (для граждан бывшего СССР этот способ оплаты не подойдет)</li></p><p align=justify>Система очень удобная, довольно много соотечественников уже работает с ней. Категории задач встречаются самые разные, от настройки серверов до разработки крупных порталов, от перевода статей на другие языки до SEO-задач.</p><p align=justify>Система удобна не только для кодеров, но и для заказчиков; поэтому этот сервис и стал таким популярным. Конкуренция там весьма высокая, поскольку среди кодеров встречаются и индусы, и китайцы, готовые работать за гроши. Они сильно демпингуют, но для кодеров с хорошим портфолио они серьезной конкуренции не представляют.</p><p align=justify>В общем, <a href="http://www.bloged.org/go.php?go=rentacoder" target=_blank>регистрируйтесь и пробуйте</a>, наверняка сервис понравится и вам.</p><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3156059507867495809-7526575883575354906?l=www.bloged.org%2Findex.html'/></div>Edhttp://www.blogger.com/profile/16525191587358173023noreply@blogger.com2tag:blogger.com,1999:blog-3156059507867495809.post-3351669858711241042008-11-01T22:43:00.003+03:002008-11-01T22:51:38.120+03:00Про Goolge AJAX API<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.bloged.org/uploaded_images/google-ajax-api-771608.jpg"><img style="cursor:pointer; cursor:hand;width: 400px; height: 271px;" src="http://www.bloged.org/uploaded_images/google-ajax-api-771600.jpg" border="0" alt="Google AJAX API" title='Must have: Google AJAX API' /></a><br /><br /><p align=justify>Недавно открыл для себя <a href="http://code.google.com/apis/ajax/" rel="nofollow" target=_blank>Goolge AJAX API</a>. Оказалось очень полезной штукой; например, можно легко и красиво построить список последних записей блога (смотрим в левый верхний угол), или встроить в страничку <a href="http://scripts.bloged.org/lt.php?from=es&to=ru&text=hola+mundo" target=_blank>переводчик с поддержкой кучи языков</a>. Еще большие чудеса можно вытворять с поиском в Google, в том числе и с поиском по картинкам. Но самое главное, что использование этого API практически не нагружает сервер, поскольку оно все построено на Javascript, выполняется на стороне клиента, а серверная часть скрипта выполняется где-то в Google. Это идеальное средство для украшательства страниц на не очень мощных и <a href="http://www.bloged.org/2008/05/vds.html" target=_blank>недорогих VDS</a>.</p><br /><p align=justify>Термсы Google не всегда позволяют использовать API так, как нам хочется. Но ничто не запрещает сделать для себя нечто аналогичное и заточить под свои нужды, большую часть кода видно невооруженным глазом.</p><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3156059507867495809-335166985871124104?l=www.bloged.org%2Findex.html'/></div>Edhttp://www.blogger.com/profile/16525191587358173023noreply@blogger.com0tag:blogger.com,1999:blog-3156059507867495809.post-75827813454600355432008-10-17T10:02:00.016+04:002009-03-24T01:28:45.685+03:00Как вытащить домен из бана поисковой системы<img src="http://www.bloged.org/uploaded_images/google_logo.jpg" title="Google Logo" alt="Google Logo" /><br /><br />Yahoo мои домены не убирал из выдачи ни разу, за что ему большое спасибо. Больше всего неприятностей доставлял бан доменов в Google и MSN. <br /><br />Официальный способ разбанивания доменов в Google - это написать reinclusion request в <a href="https://www.google.com/accounts/ServiceLogin?service=sitemaps&nui=1&continue=https://www.google.com/webmasters/tools/siteoverview%3Fhl%3Den&hl=en" rel="nofollow" target=_blank>Google Webmaster Tools</a>. Этот способ реально работает, и он не самый быстрый. Гугловцы рассматривают эти заявки по нескольку месяцев, и результат не гарантирован. Вообще, очень плохо, что в своих хваленых инструментах для вебмастеров Google не показывает причину бана домена, что же именно привело его к блокированию; поэтому приходится придумывать самые разные причины, и описывать их в reinclusion request.<br /><br />В начале 2007 года домен bloged.org оказался в бане Google и MSN. Я поменял контент, перенес домен к <a href="http://firstvds.ru/ru/home/index.html?from=32008" rel="nofollow" target=_blank>firstvds</a> и решил на нем сделать блог. Идея оказалась удачной, MSN автоматически разбанил домен. А вот Google никак не отреагировал на смену контента, пришлось писать reinclusion request. <br /><br />Прошло что-то около трех месяцев, гугл никак не хотел включать сайт в индекс. Тогда я написал о своей проблеме в Google Groups, и через 3 дня сайт начал индексироваться. В общем, у меня сложилось впечатление, что если написать о своей проблеме в <a href="http://groups.google.com/group/Google_Webmaster_Help" rel="nofollow" target=_blank>Google Groups</a>, то проблема решается намного быстрее. <br /><br />Несколько раз слышал утверждение, что Google применяет амнистию к забаненым доменам. По-моему это миф, на своих доменах ни разу не видел такого.<br /><br />Если написать письмо в гугл - они отвечают стандартной отпиской, с приблизительным текстом: "мы работаем с миллионами сайтов, и у нас нет возможности просмотреть каждый сайт отдельно". Это означает, что ваше письмо ушло в /dev/null, толку от вашего сообщения нет вообще. Писать письма надо в Google Groups, только там люди из Google могут дать полуофициальный ответ.<br /><br />Намного сложнее вытащить домен из бана MSN. Если причины, по которым банит Google, более-менее понятны, то причины Microsoft находятся вне пределов моего понимания. Несколько белоснежно-белых сайтов ушли в бан; а мой фид одной известной PPC находится в индексе - несмотря на запрет индексации через robots.txt.<br /><br />Саппорт Live.com - это вообще отдельная песня. Я переписывался с ними 10 месяцев для того, чтобы вытащить один из своих доменов из бана.<br /><br />Как я понял, у них там три уровня разборок с овнерами доменов. На первом уровне "специалисты" отвечают на сообщения клиентов, но в их компетенции я сомневаюсь. После того, как я написал тикет, горе-специалист с прикольным индейским именем долго отказывался передавать тикет тому, кто действительно может помочь - на том основании, что у меня для сайта не был создан robots.txt. 2 недели ушло на то, чтобы убедить саппорт в том, что отсутствие robots.txt не влияет на индексацию. <br /><br />Дальше мой тикет передали в Microsoft Global Escalations, где чуть более компетентный сотрудник особо не напрягаясь меня вежливо послал ожидать окончания апдейта в их поисковой системе. Я на это дело повелся, ждал 4 месяца - разумеется, результат был нулевой.<br /><br />Самый правильный способ вытаскивания домена из бана поисковой системы Live, это зарегистрироваться на их <a href="http://forums.microsoft.com/webmaster/default.aspx?siteid=79" target=_blank rel="nofollow">форуме для вебмастеров</a>. Там есть адекватный человек, модератор, Brett Yount. Он один из немногих людей, который довольно быстро и точно могут сказать, забанен домен в MSN или нет; кроме того, он может подсказать, что делать дальше.<br /><br />Brett Yount мне сообщил, что мой сайт был ошибочно определен как спам, и посоветовал написать тикет через <a href="https://support.live.com/eform.aspx?productKey=wlsearch&page=wlsupport_home_options_form_byemail&ct=eformts" rel="nofollow" target=_blank>Live Search Site Owner support form</a>. И снова контакт с неадекватным специалистом из Microsoft, и снова передача тикета в Microsoft Global Escalations. Но на сей раз там попался вполне адекватный сотрудник, который передал мой тикет в Microsoft SPAM Team, где и разбанили мой домен.<br /><br />Долго я этого ждал, но все таки смог победить эту тяжелую и неповоротливую бюрократическую машину в Microsoft, чего и вам желаю.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3156059507867495809-7582781345460035543?l=www.bloged.org%2Findex.html'/></div>Edhttp://www.blogger.com/profile/16525191587358173023noreply@blogger.com1tag:blogger.com,1999:blog-3156059507867495809.post-14312251213665534792008-10-11T21:39:00.011+04:002008-10-11T22:29:40.052+04:00Как собрать ядро для OpenSuSe 11<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.bloged.org/uploaded_images/tux-small-736617.jpg"><img style="cursor:pointer; cursor:hand;" src="http://www.bloged.org/uploaded_images/tux-small-736614.jpg" border="0" alt="The Linux Kernel" title="Ядро Linux" /></a><br />Ядро, которое идет вместе с дистрибутивом <a href="http://www.bloged.org/2008/07/11-opensuse.html" target=_blank>OpenSuSe 11</a>, достаточно компактное и неплохо напичкано всякими примочками. Но если есть желание выжать из своей системы максимум возможностей, без пересборки ядра не обойтись.<br /><br />Для начала надо установить пакет kernel-source через Yast. Исходники ядра лягут в свои директории, и создастся симлинк на эти исходники - <b>/usr/src/linux</b>.<br /><br />После этого выполняем следующие команды:<br /><br /><b>cd /usr/src/linux<br />make mrproper</b><br /><br />make mrproper создает такую же конфигурацию для компиляции ядра, которая сейчас используется в системе. Это очень удобно, из нее всего лишь надо будет выкинуть лишее или добавить желаемое. <br /><br /><b>make menuconfig</b><br /><br />Это самый отвественный этап. Здесь выкидывается всякая ненужная хрень. Например, я собирал ядро для своего ноутбука. Там была масса всякой ненужной гадости, которая совершенно точно не пригодится на нем - поддержка RAID-массивов, виртуализация и многое другое. Если эти фичи поотключать, ядро становится меньше и соответственно, при использовании облегченного ядра остается больше ресурсов для других процессов. Здесь еще важно поменять название ядра. Если оно именовалось как default, то лучше его переименовать, например, в mykernel001. Потому что при выходе нового ядра kernel-default Yast просто-напросто перепишет облегченное ядро новой версией. <br /><br />Дальше я делаю вот что:<br /><br /><b>make rpm</b><br /><br />Ядро собирается очень долго, на моем старом ноутбуке процесс сборки занял около двух часов.<br />RPM пригодится, если у вас есть несколько ноутбуков одинаковых моделей. Для установки на другой ноутбук собранного ядра достаточно скопировать получившися rpm. Нет нужды повторно собирать ядро.<br />Получившееся ядро в виде rpm легко установить на любой из ноутбуков с помощью команд:<br /><br /><b>rpm -ivh kernel-2.6.25.160.1-2.i386.rpm<br />mkinitrd</b><br /><br />После этого остается только поправить конфиг загрузчика (grub или lilo), чтобы была возможность выбрать версию ядра, с которой будет загружаться система. Сразу отказываться от старого проверенного ядра не стоит, вдруг при сборке ядра отключили что-то лишее и какое-нибудь устройство перестало работать. Поэтому не исключено, что ядро придется пересобирать несколько раз для того, чтобы достичь оптимальной производительности системы.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3156059507867495809-1431225121366553479?l=www.bloged.org%2Findex.html'/></div>Edhttp://www.blogger.com/profile/16525191587358173023noreply@blogger.com0