Thursday, September 2nd, 2010
from urllib2 import urlopen
""" Returns True if we appear to have an internet connection or False.
It defaults to using google as a test server, but you can supply an alternative if you want."""
def isonline(reliableserver='http://www.google.com'):
try:
urlopen(reliableserver)
return True
except IOError:
return False
частенько нужно проверять есть ли коннект к интернету во время выполнения какого-либо скрипта. озадачился недавно, т.к. провайдер несколько напрягал пару дней.
Posted in Code, Python | No Comments »
Tuesday, August 31st, 2010
Собственно рабочая функция проверки Google Page Rank :
import urllib, sys
def get_pagerank(url):
hsh = check_hash(hash_url(url))
gurl = 'http://www.google.com/search?client=navclient-auto&features=Rank:&q=info:%s&ch=%s' % (urllib.quote(url), hsh)
try:
f = urllib.urlopen(gurl)
rank = f.read().strip()[9:]
except Exception:
rank = 'N/A'
if rank == '':
rank = '0'
return rank
def int_str(string, integer, factor):
for i in range(len(string)) :
integer *= factor
integer &= 0xFFFFFFFF
integer += ord(string[i])
return integer
def hash_url(string):
c1 = int_str(string, 0x1505, 0x21)
c2 = int_str(string, 0, 0x1003F)
c1 >>= 2
c1 = ((c1 >> 4) & 0x3FFFFC0) | (c1 & 0x3F)
c1 = ((c1 >> 4) & 0x3FFC00) | (c1 & 0x3FF)
c1 = ((c1 >> 4) & 0x3C000) | (c1 & 0x3FFF)
t1 = (c1 & 0x3C0) << 4
t1 |= c1 & 0x3C
t1 = (t1 << 2) | (c2 & 0xF0F)
t2 = (c1 & 0xFFFFC000) << 4
t2 |= c1 & 0x3C00
t2 = (t2 << 0xA) | (c2 & 0xF0F0000)
return (t1 | t2)
def check_hash(hash_int):
hash_str = '%u' % (hash_int)
flag = 0
check_byte = 0
i = len(hash_str) - 1
while i >= 0:
byte = int(hash_str[i])
if 1 == (flag % 2):
byte *= 2;
byte = byte / 10 + byte % 10
check_byte += byte
flag += 1
i -= 1
check_byte %= 10
if 0 != check_byte:
check_byte = 10 - check_byte
if 1 == flag % 2:
if 1 == check_byte % 2:
check_byte += 9
check_byte >>= 1
return '7' + str(check_byte) + hash_str
print get_pagerank("http://twitter.com")
Posted in Code, Python | 1 Comment »
Tuesday, August 24th, 2010
Не так давно услышал про такую IDE как Pyscripter. Скачал отсюда, утсановил. Вообщем пара слов : легче чем NetBeans определенно. Рекомендую.
Posted in Code, Notes, Python | No Comments »
Monday, June 21st, 2010
Бывает необходимо замерить время выполнения скрипта или функции. Сделать это можно следующим образом :
start = time.time()
function_name()
print "Elapsed Time: %s" % (time.time() - start)
function_name() <<—- функция время выполнения которой нужно замерить
Posted in Code | No Comments »
Friday, May 21st, 2010
Самое время установить FTP сервер. Комрады рекомендуют – vsftpd. Eго используют на таких серьезных сайтах, как : ftp.redhat.com, ftp.suse.com, ftp.debian.org, ftp.gnu.org, ftp.gnome.org, ftp.kde.org, т.е. фтп с высокой загрузкой. для которых не менее важна надежность.
Внимание!!! FTP сервер может быть уже установлен (проверьте это попробовав зайти на ftp://youserverIP).
У меня отлично поставился через yum (если версия linux у вас 64 битная, то рекомендую для начала проверить наличие 64 битной весии yum search vsftpd) :
yum install vsftpd
[root@server/]# yum install vsftpd
...... [cut]
Downloading Packages:
(1/1): vsftpd-2.0.6-6.fc9.x86_64.rpm | 143 kB 00:00
Running rpm_check_debug
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
Installing: vsftpd ######################### [1/1]
Installed: vsftpd.x86_64 0:2.0.6-6.fc9
Complete!
Из кусочка лога видно, что поставилась нужная 64 битная версия, yum сработал как надо.
Теперь для тех лузеров у кого не получилось установить из репозитария с помощью yum’а. Ниггер, как ты правильно понял тебя ждут суровые испытания
скопировать нужную версию тут. Качаем последний архив .tar.gz в папку например root/install :
[root@server install]# wget ftp://vsftpd.beasts.org/users/cevans/vsftpd-2.0.7.tar.gz
C помощью mc распаковываем его. Заходим в папку куда распаковали и втыкаем маунал в файле install. Ну а что? Установка с исходников дело неинтеллигентное. Для RedHat/Fedora систем есть rpm, нужно только погуглить и поставить vsftpd из rpm точно таким же образом как например webmin. Думаю если поискать, то можно найти и rpm для CentOS’а.
Я оптимистично полагаю, что все же yum сработал и vsftpd установился без проблем. Теперь нужно сконфигурировать и запустить.
/etc/vsftpd/ – в этой папке находятся файлы конфигурации (это можно посмотреть набрав команду whereis vsftpd)
Делаем следующее :
Создаем папку для фтп – /var/ftpwww/
Через webmin создаем юзера – ftpwww (system->Users and Groups), задаем ему папку (/var/ftpwww), shell – /sbin/nologin и пароль.
Теперь нужно поправить файл конфига – vsftpd.conf (находится в /etc/vsftpd/vsftpd.conf)
# Example config file /etc/vsftpd/vsftpd.conf
#
# Allow anonymous FTP? (Beware - allowed by default if you comment this out).
anonymous_enable=YES
#
# Uncomment this to allow local users to log in.
local_enable=YES
#
# Uncomment this to enable any form of FTP write command.
write_enable=YES
#
# Default umask for local users is 077. You may wish to change this to 022,
# if your users expect that (022 is used by most other ftpd's)
local_umask=022
#
# Uncomment this to allow the anonymous FTP user to upload files. This only
# has an effect if the above global write enable is activated. Also, you will
# obviously need to create a directory writable by the FTP user.
#anon_upload_enable=YES
#
# Uncomment this if you want the anonymous FTP user to be able to create
# new directories.
#anon_mkdir_write_enable=YES
#
# Activate directory messages - messages given to remote users when they
# go into a certain directory.
dirmessage_enable=YES
#
# Activate logging of uploads/downloads.
xferlog_enable=YES
#
# Make sure PORT transfer connections originate from port 20 (ftp-data).
connect_from_port_20=YES
#
# If you want, you can arrange for uploaded anonymous files to be owned by
# a different user. Note! Using "root" for uploaded files is not
# recommended!
#chown_uploads=YES
#chown_username=whoever
#
# You may override where the log file goes if you like. The default is shown
# below.
#xferlog_file=/var/log/vsftpd.log
#
# If you want, you can have your log file in standard ftpd xferlog format.
# Note that the default log file location is /var/log/xferlog in this case.
xferlog_std_format=YES
#
# You may change the default value for timing out an idle session.
#idle_session_timeout=600
#
# You may change the default value for timing out a data connection.
#data_connection_timeout=120
#
# It is recommended that you define on your system a unique user which the
# ftp server can use as a totally isolated and unprivileged user.
#nopriv_user=ftpsecure
#
# Enable this and the server will recognise asynchronous ABOR requests. Not
# recommended for security (the code is non-trivial). Not enabling it,
# however, may confuse older FTP clients.
#async_abor_enable=YES
#
# By default the server will pretend to allow ASCII mode but in fact ignore
# the request. Turn on the below options to have the server actually do ASCII
# mangling on files when in ASCII mode.
# Beware that on some FTP servers, ASCII support allows a denial of service
# attack (DoS) via the command "SIZE /big/file" in ASCII mode. vsftpd
# predicted this attack and has always been safe, reporting the size of the
# raw file.
# ASCII mangling is a horrible feature of the protocol.
#ascii_upload_enable=YES
#ascii_download_enable=YES
#
# You may fully customise the login banner string:
#ftpd_banner=Welcome to blah FTP service.
#
# You may specify a file of disallowed anonymous e-mail addresses. Apparently
# useful for combatting certain DoS attacks.
#deny_email_enable=YES
# (default follows)
#banned_email_file=/etc/vsftpd/banned_emails
#
# You may specify an explicit list of local users to chroot() to their home
# directory. If chroot_local_user is YES, then this list becomes a list of
# users to NOT chroot().
chroot_list_enable=YES
# (default follows)
chroot_list_file=/etc/vsftpd/chroot_list
#
# You may activate the "-R" option to the builtin ls. This is disabled by
# default to avoid remote users being able to cause excessive I/O on large
# sites. However, some broken FTP clients such as "ncftp" and "mirror" assume
# the presence of the "-R" option, so there is a strong case for enabling it.
#ls_recurse_enable=YES
#
# When "listen" directive is enabled, vsftpd runs in standalone mode and
# listens on IPv4 sockets. This directive cannot be used in conjunction
# with the listen_ipv6 directive.
listen=YES
#
# This directive enables listening on IPv6 sockets. To listen on IPv4 and IPv6
# sockets, you must run two copies of vsftpd whith two configuration files.
# Make sure, that one of the listen options is commented !!
#listen_ipv6=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
Это пример конфига для vsftpd. Обратите внимание, что вот эти строчки нужно раскомментировать.
chroot_list_enable=YES
# (default follows)
chroot_list_file=/etc/vsftpd/chroot_list
затем создать файл chroot_list – и туда записать юзера ftpwww, это необходимо для того, чтобы запретить юзеру ходить дальше назначенной папки.
+ закомментировать anonymous_enable=YES, на всякий случай, нам же не нужно чтобы на фтп сервер коннектились разные анонимусы =)
Вот и все! Осталось только перезапустить vsftpd :
/etc/init.d/vsftpd restart
Теперь можно соединятся с сервером используя FAR или Total Commander. Настраиваем подключение через свой фтп менеджер :
Server – IP вашего сервера, ну и логин/пасс – юзера которого вы создали через вебмин.
Posted in Server | No Comments »
Wednesday, May 12th, 2010
Есть масса сервисов которые позволяют захостить у себя картинку, пожалуй самые известные это imageshack.us и tinypics.com
Однако есть сервис получше – clip2net.com
Фишка в том, что вы ставите себе небольшую программку – клиент, которые висит в трее и позволяет парой кликов выложить в нет область экрана. Это очень удобно, как для блоггеров, так и просто для тех кто работает в комманде.
Posted in Notes | 2 Comments »
Wednesday, May 5th, 2010
10 htaccess Hacks Every SEO Should Know
Есть много трюков которые вы можете проделать с .htaccess файлом, и конечно они могут быть достаточно продвинутыми. Далее 10 хаков htaccess которые должен знать каждый вебмастер.
1. Кэширование с помощью htaccess. Force Caching with htaccess
Использование: следующй код, не поможет вам при начальной загрузке страницы, но зато значительно ускорит последующие, отправив 304 статус, когда элементы не были модифицированны.
FileETag MTime Size
ExpiresActive on
ExpiresDefault “access plus x seconds”
Я обычно устанавливаю кэш на один день (86400 секунд). Вы можете установить это время для каждого типа файлов, прописывая каждый на отдельной строке ExpiresByType примерно так :
ExpiresByType image/gif “access plus x seconds”
ExpiresByType text/css “access plus x seconds”
Все просто.
2. Установить 404 страницу с помощью htaccess. Set a Custom 404 Page with htaccess
Использование : Думаю это та фишка, которая не нуждается в детальном пояснении. Просто измените ‘/notfound.html’ чтобы полностью соответствовать пути к 404 странице.
ErrorDocument 404 /notfound.html
Элементарно.
3. Реализация 301 редиректа с помощью htaccess. Implement a 301 Redirect with htaccess
Использование : если вы изменили структуру урлов на сайте (оптимизируя или просто сменив CMS), вам нужно будет реализовать 301 редирект со старых урлов на новые.
Синтаксис для базового 301 редиректа :
Redirect 301 relative/path/to/oldurl/ http://www.domain.com/newurl/
Пояснение :
первый урл должен быть относительным путем к старому урлу, и 2ой должен быть абсолютным путем к новому урлу.
4. Разрешить только определенным IP адресам доступ в дирректорию. Only allow specific IP addresses in certain directories
Это особенно частоприменимо для админских директорий. Я обычно ставлю свой домашний и рабочий IP адреса в качестве допустимых IP с которых можно залогинится. По сравнению с другими хаками .htaccess, этот не будет работа с корневой директории. Вы должны будете сделать новый .htaccess файл, прописать нужный код и загрузить в вашу админскую дирректорию.
AuthUserFile /dev/null
AuthGroupFile /dev/null
AuthName “Example Access Control”
AuthType Basic
order deny,allow
deny from all
allow from xx.xx.xx.xx
Чтобы разрешить еще один IP, просто добавьте еще одну строчку ‘allow from’
5. Предотвращаем хотлинк картинок с помощью htaccess. Prevent Image Hot Linking with htaccess
Удалено, есть намного лучший способ сделать это, спасибо [url="http://www.polepositionmarketing.com/seo-sem/link-building-secrets/maurizio-petrone.php"][b]Maurizio Petrone[/b][/url]
6. Включить gzip в htaccess. Enable gzip with htaccess
Gzip означает сжатие файлов на вашем сервере (перед отправкой их вам), т.е. страницы будут загружаться быстрее. Чтобы активировать gzip :
AddOutputFilterByType DEFLATE text/html text/plain text/xml application/xml application/xhtml+xml text/javascript text/css application/x-javascript
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4.0[678] no-gzip
BrowserMatch bMSIE !no-gzip !gzip-only-text/html
7. Remove ‘category’ from a URL with htaccess
Многие CMS используют категории в урлах, к примеру :
http://makeitrank.com/category/category-name
Хорошо, это нормально, и нужно для того, чтобы CMS работала как положено, но эти урлы не обязательно должны быть видны.
RewriteRule ^category/(.+)$ http://www.yourdomain.com/$1 [R=301,L]
Просто поместите этот код в ваш htaccess файл.
8. Определить любую страницу как homepage используя htaccess. Define any page as the home page with htaccess
Вы можете установить любую страницу как homepage добавив следующее в файл htaccess расположенный в корневой директории.
DirectoryIndex myfile
9. Отключить просмотр директории. Disable Directory Browsing
Можно держать людей подальше от просмотра содержимого каталогов, которые могли бы выявить слабости безопасности, к примеру doc директория в phpBB форумах, где можно посмотреть номер текущей установленной версии, или папка с плагинами.
Вы можете заблокировать посетителям просмотр добавив следующую строчку в htaccess файл в директории которую желаете забокировать.
Options All -Indexes
10. Защитите свой htaccess файл. Protect your htaccess file
Ну и наконец, вы хотите защитить свой htaccess файл. Надеюсь ваш хост сделал это за вас, но я бы на это не полагался. Следующий хак не позволит никому иметь доступ к вашему htaccess файлу :
<Files .htaccess>
order allow,deny
deny from all
</Files>
Posted in Server | 3 Comments »
Wednesday, May 5th, 2010
Часто встречаются ресурсы где текст вводится в яваскрипт боксе. Т.е. элемента к которому можно обратиться средствами Human Emulator’а как бы нет. Однако если использовать Firebug можно обнаружить, что набираемый текст появляется внутри каких либо тегов.
Т.е. фактически его можно просто туда вставить, делается это слудующим образом:
/* <div id="test1"><div id="test2"></div></div> */
function str_insert($insertstring, $intostring, $offset) {
$part1 = substr($intostring, 0, $offset);
$part2 = substr($intostring, $offset);
$part1 = $part1 . $insertstring;
$whole = $part1 . $part2;
return $whole;
}
$elem = "tst2"
$page = $webpage->get_body();
$pos = strpos($page, $elem);
$page = str_insert("Hello Kitty", $page, $pos + strlen($elem) + 1);
$webpage->set_body ($page);
$browser->wait_for(10,1);
подмена страницы =) Думаю идея понятна.
Posted in Human Emulator | 2 Comments »
Sunday, April 25th, 2010
Многие конечно же имеют свой сервер для белых проектов или других более темных вещей, но как известно за удобную панель управления вроде CPanel или DirectAdmin’а нужно доплачивать деньги, кажется не так много, но сервера сейчас дешевые поэтому эти 10-20$ дают ощутимую прибавку к конечной стоимости. К этому стоит еще добавить глючность и наличие дыр в этих самых панелях, благодаря которым умные парни с хак-форумов могут получить доступ туда, куда не нужно. Вариант второй : иногда бывает, что берут безабузный сервер для апостера, и тратить лишние деньги за не нужную панель – грех. К счастью это linux, и тут есть масса бесплатных вариантов, об одном из них расскажу подробнее. Итак :
Установка панели управления сервером – Webmin.
Может отличаться для разных версий Linux’а.
Для начала нужно скачать webmin из репозитария :
yum install webmin
затем проверьте все ли прошло нормально
whereis webmin
если не получилось (у меня на CentOS не получилось, хз в чем дело) то после выполнения команды yum install webmin будет что-то вроде этого :
[root@server etc]# yum install webmin
Setting up Install Process
Setting up repositories
...
...
Excluding Packages in global exclude list
Finished
Parsing package install arguments
No Match for argument: webmin
Nothing to do
что может ввести в заблуждение, вроде что-то качается и даже что-то пишет, на самом деле это yum стягивает список продуктов, а вебмина нету в репозитарии.
Если не судьба поставить на автопилоте, то придется скачивать самому. Для этого идем сюда – http://www.webmin.com/download.html и качаем дистрибутив для своей системы. Для меня подошел этот http://prdownloads.sourceforge.net/webadmin/webmin-1.430-1.noarch.rpm.
Качаем нужный командой wget :
wget http://prdownloads.sourceforge.net/webadmin/webmin-1.430-1.noarch.rpm
wget копирует файл в текущую дерикторию. Люди рекомендуют сохранять такие файлы в /root – например /root/installs . Инсталлируем :
rpm -i webmin-1.430-1.noarch.rpm
далее все происходит на автомате. Скорее всего выведет complete.
Теперь нужно зайти и залогинится. Логинимся так yourserverip:10000 Но тут возможны варианты, в конце инсталяции rpm написал, что теперь могу логиниться со своим рут паролем, однако может быть так что пароль будет пустым (этот вариант вполне возможен если сразу ставить из репозитария). Если пароль пустой, то естественно нужно его сменить в интерфейсе Webmin’а.
Posted in Server | No Comments »
Sunday, April 25th, 2010
LinkedLn.com – социальная сеть которая может помоч установить проффесиональные (имеется в виду по работе) отношения, наладить нове связи, и найти старых коллег. Бла-бла, короче нам это не интересно. Что это за сеть видно сразу как заходишь на официальный сайт. Некто Guy Kawasaki опубликовал 10 довольно интересных способов использования LinkedLn, некоторые из них натолкнули меня на довольно интересные мысли
- Наращивай свое присутствие (Increase your visibility).
Добавляйте новые связи в свой профиль, тем самым вы увеличиваете вероятность, что люди будут к вам чаще заходить, и возможно вероятный работодатель увидит вашь профиль раньше, что увеличивает шансы получить выгодное предложение. Ваши шансы появится в результатах поиска выше (что несомненый плюс если вы один из нескольких десятков тысяч), и люди чаще работают с теми кого их друзья знают и кому они доверяют.
Это стандартная фишка раскрутки в софиальных сетях вроде Facebook или vkontakte. Работает, чем больше народу в друзьях – тем больше посещений.
- Будь коммуникабельным (Improve your connectability).
Большенство новых пользователей сервса, отмечают в своем профиле только текущую компанию в которой работают, тем самым резко ограничевая свои возможности коммуникации, с бывшими друзьями/коллегами. Заполните профиль как свою собственную биографию, включите в список компании в которых работали, места учебы и т.д. Помимо этого включите ссылку на свой профиль в сигнатуру ваших email, это позволит вам ненавязчиво попонтоваться перед собеседником (согласитесь, подсовывать партнеру/работодателю ссылку на вашь профиль было бы несколько неуклюже).
- Улучшай свой Google PR (Improve your Google PageRank).
LinkedLn позволяет сделать ваш профиль доступным для индексации поисковыми системами (!!! fckin good!). Т.к. профиля LinkedLn получают довольно хороший PR в гугле, и соответственно из-за траста платформы еще и стоят на хороших позициях (смотри пункт 1), это хороший способ влиять на то что люди видять когда ищут вас. Создайте public profile, и в опциях укажите “Full view”, кроме того вместо того, чтобы использовать URL по умолчанию, настройте его так чтобы он включал в себя ваше имя (читай кейворд). Чтобы поднять свою страницу в результатах выдачи, попробуйте ставить ссылки с различных мест, например когда вы комментируете в блоге – ставьте в поле URL ссылку на свой профиль (ага, используйте хрумер).
- Улучшите свои позиции в поисковых системах (Enhance your search engine results).
Помимо своего имени, вы можите попробовать продвинуть свой сайт в поисковых системах вроде Google и Yahoo, размещая ссыли на свои ресурсы с профиля, LinkedLn позволяет это делать (да, мистер Кавасаки, твое кунг-фу очень клево
). Существует несколько предварительно созданных категорий вроде “My Website,” “My Company,” и т.д. Крайне интересная возможность, особенно радует то, что сылок можно поставить несколько.
- Внимательно отслеживайте и изучайте нужных людей (Perform blind, “reverse,” and company reference checks).
LinkedLn предоставляет иструмент для проверки связей – введите имя компании + год когда в ней работал нужный вам человек, и сервис найдет вам людей, которые работали в компании в это же время. Хороший способ собрать досье на коллегу
Работодатель, полюбому будет проверять таким способом вас, прежде чем нанять, но вы ведь никогда не думали, чтобы проверить таким же образом своего будещего менеджера? У большинства не хватает смелости спросить ссылку с LinkedLn, на собеседовании при приеме на работу у своего потенциального босса (бля, очень далеко от российских реалий). Короче еще до того как переться на собеседование, вы можите просмотреть информацию о нужном человеке, пообщаться с его бывшими коллегами, иными словами тщательно подготовиться. Кроме того можно разведать внутренний потенциал компании, узнать у кого какие скелеты в шкафу, чтобы быть в курсе потенциала развития.
Между прочим, если использование LinkedLn таким способом станет обычной практикой, то трудно будет спиздеть в резюме. А боссу будет забавно узнать, что тип который понтовался охрененными результатами и как он способствовал развитию компании, на самом ни на что не годный болван, которого на предыдущем месте работы дрючили все кому было не не лень это делать.
- Улучшите релевантность поиска своей работы (Increase the relevancy of your job search).
Начните поиск работы, с исследования : где работают люди с таким же как вы образованием и опытом? Поищите по ключевым словам по своей специальности.
- Пусть интервью пройдет более “гладко” (Make your interview go smoother).
Используйте LinkedLn чтобы найти людей с которыми вы видитесь. Если у вас есть общие интересы или увлечения, это может стать хорошей отправной точной для разговора. Намного лучше, чем на тупой вопрос как дела не менее тупо ответить : “Нормально, а у тебя?”
- Проверьте потенциал компании (Gauge the health of a company).
Используйте продвинутый поиск имени компании и уберите опцию “Current Companies Only”. Это позволит вам увидеть текучку кадров и запалить когда ключевые фигуры в компании начинают сваливать с корабля. Обычно бывшие служащие более искренне отзываются о перспективах компанию, чем те кто еще на борту.
- Как себя чувствует индустрия в целом? (Gauge the health of an industry).
Полезно задаться этим вопросом, если вы планируете делать инвестиции или планируете свой бизнес. Найдите людей, что работали на конкурентов, или еще лучше в компаниях которые потерпели неудачу и побеседуйте с ними.
- Следите за стартапами (Track startups).
Вы можите увидеть как люди из вашей социальной сети начинают запускать стартапы используя advnched search по различным ключевым фразам, таким например как “stealth” или “new startup.” Примените “Sort by” по “Degrees away from you” фильтр к результатам поиска, чтобы расположить более близких к себе людей в начале списка.
Часть этих правил довольно интересна, но не более того, а вот первые насколько пунктов могут погрузить сеошника в тяжкие раздумья. Таких сервисов в сети появляется все больше и больше, а те “белые” советы которые дают в своих блогах люди вроде мистера Кавасаки, вполне подходят и для блэкхета.
Posted in social networks | 1 Comment »