- Воспользоваться самой IDE. Так вы получите подсветку в стиле, привычном для вас и, возможно, ваших коллег (или соучастников сообщества, в которое вы обратились), Например, JetBrains Pycharm (а также NetBeans) предлагает удобную подсветку синтаксиса с возможностью выбрать кусок текста, который надо подсветить.
Минус: стили подсветки не инлайнятся и в код вашего сообщения, если вы куда-то этот код отправляете, необходимо вставлять также и блок со стилем. Это не всегда удобно (например, мне сейчас пришлось так сделать).
def setUp(self): self.group = TestGroup() self.moderation_rules = ModerationRule.get_many(data_getter=lambda x: moderation_rules)
- Использовать редактор VIM.
Не все знают, что в vim есть поддержка экспорта в HTML. Для этого существует команда :TOhtml, которая генерирует html-код в стиле vim и выводит его в отдельном "окне", что позволяет его сохранить (:w).
- Плюсы:
- Имеется почти на каждом компьютере с unix-подобной ОС.
- VIM такой VIM. Все-таки vim - это круто. Когда вы его используете, вы как бы соприкасаетесь с историей (жаль, это нужно далеко не всегда).
- Минусы:
- Вам в 80% случаях придется не по вкусу то, что он нагенерировал (или вы собираетесь вставить код на какой-нибудь черный фон?).
- Непонятно, как изменить цветовую схему того, что он выдает.
- Использовать сервис в интернете для подсветки синтаксиса. Например, tohtml.com (а вообще их более 9000). Это, наверное, самый оптимальный вариант, так как код, изготовляемый сервисом, уже готов для вставки в различные формы на форумах, блогах итд.
- Плюсы:
- Код здесь получается довольно приятным по цвету и все стили - инлайнятся, поэтому не нужно вставлять никаких дополнительных блоков
- Поддерживается множество языков программирования, а также множество вариантов расцветки.
- Не нужно иметь IDE под рукой - сервис работает достаточно быстро и, разумеется, везде, где есть интернет.
- Минусы:
- Возможно, вам покажется непривычной расцветка кода, которую вам предложит сервис
суббота, 20 августа 2011 г.
Подсветка синтаксиса
Подсветка синтаксиса – это то, без чего нам теперь уже не обойтись и мы, конечно, благодарны средам разработки, которые одарили нас этим чудом. Но как экспортировать эти чудеса в html для интернетов? Есть несколько способов:
пятница, 19 августа 2011 г.
Vim: как заменить табы на пробелы
Достаточно простой способ замены табов на пробелы предлагает vim. Для этого нужно:
- Воспользоваться опцией expandtab, которая позволяет при нажатии на клавишу TAB вставлять в текст пробелы. Делается это так:
:set expandtab
- Набрать команду retab
:retab
среда, 6 июля 2011 г.
Jetbrains Pycharm: полуавтоматическое обновление
В Pycharm есть очень много полезных фич, но лично мне не хватает автоматического обновления. К счастью, это очень просто лечится примерно таким bash-скриптом.
Использование:
sh ./download_pycharm.sh 1.5.2
либо
sh ./download_pycharm.sh
Как видим, скрипт получает от нас номер нужной версии Pycharm, либо сам спрашивает. скачать. Затем, он выкачивает архив, распаковывает и складывает в подкаталог bin нашего домашнего каталога + играет с символическими ссылками, чтобы в ~/bin/pycharm можно было всегда найти свежую версию IDE.
Разумеется, скрипт работает только пока ребята в JetBrains не поменяли структуру каталогов, из которых происходит скачивание.
#!/bin/sh if [ $1 ] then VER=$1 else echo "Which version of pycharm ide do you want do download?" read VER fi NAME=PyCharm-$VER.tar.gz EXTRACTED=pycharm-$VER cd ~/bin wget -c http://download.jetbrains.com/python/$NAME tar xzf $NAME unlink pycharm ln -s $EXTRACTED pycharm
Использование:
sh ./download_pycharm.sh 1.5.2
либо
sh ./download_pycharm.sh
Как видим, скрипт получает от нас номер нужной версии Pycharm, либо сам спрашивает. скачать. Затем, он выкачивает архив, распаковывает и складывает в подкаталог bin нашего домашнего каталога + играет с символическими ссылками, чтобы в ~/bin/pycharm можно было всегда найти свежую версию IDE.
Разумеется, скрипт работает только пока ребята в JetBrains не поменяли структуру каталогов, из которых происходит скачивание.
понедельник, 16 мая 2011 г.
Глобальный 301 редирект на/с "www." версию домена в nginx
Для чего если можно просто указать все версии домена в
Подчтеннейшая публика! Предлагаю Вам вариант универсального редиректа на все виртуальные серваки управляемые целевым nginx'ом.
В общем для мазохистов-любителей длинных имён и прочих эмо есть вариант редиректа с без "www" на "www":
да, почему-то принято упоминать, что автор решения Игорь Сысоев.
Для прочих же, кто не стремится нажимать лишние клавиши преобразование из "www" в без "www"
Автор решения Ваш покорный слуга :)
ВНИМАНИЕ! Всё это дело вставляется в начало блока
server_name
? Чтоб не слетали куки. А то авторизованный на example.com
человек оказывается не авторизован на www.example.com
куда его привела скажем ссылка из уведомления о новом ответе на форуме. Это очень раздражает.Подчтеннейшая публика! Предлагаю Вам вариант универсального редиректа на все виртуальные серваки управляемые целевым nginx'ом.
В общем для мазохистов-любителей длинных имён и прочих эмо есть вариант редиректа с без "www" на "www":
server { server_name ~^(?!www\.); rewrite ^ http://www.$host$request_uri permanent; }
да, почему-то принято упоминать, что автор решения Игорь Сысоев.
Для прочих же, кто не стремится нажимать лишние клавиши преобразование из "www" в без "www"
server { server_name ~^(?=www\.); if ( $host ~* "www.(.*)"){ set $unwww $1; } rewrite ^ $scheme://$unwww$request_uri permanent; }
Автор решения Ваш покорный слуга :)
ВНИМАНИЕ! Всё это дело вставляется в начало блока
http
файла nginx.conf
и не забываем убирать в конфах виртуальных серваков из server_name
вариант с/без "www" (убираем то, с чего редиректим), а то не сработает!
среда, 22 декабря 2010 г.
Индивидуальные ssh ключи для разных git проектов
Ситуация - 2 проекта в разных git репозиториях. Скажем один с работы один личный. Допустим тебе срочно нужно подправить что-то в личном проекте, ты находишься на работе а нужно загрузить обновлённые файли в репозиторий. Я пользуюсь сервисом codaset.com который, как известно, "как github только лучше" (в частности предлагает бесплатно 1 приватный проект для разработки с не ограниченным количеством участников и больше места). Соответственно по работе там один акк, а личный - другой и у них разные ssh ключи для доступа (что тоже логично, как мне кажется), рабочий и личный. Личный у меня на флешке на шифрованном виртуальном диске.
Проблема в том, что пытаясь залепить push в репу из личного проекта система подхватывает рабочий публичный ключ (т.к. она уже работала с этим сервером) и соответсвенно не пускает меня с левым ключём в частный репозиторий.
Выходы есть такие:
Проблема в том, что пытаясь залепить push в репу из личного проекта система подхватывает рабочий публичный ключ (т.к. она уже работала с этим сервером) и соответсвенно не пускает меня с левым ключём в частный репозиторий.
Выходы есть такие:
среда, 10 ноября 2010 г.
Рандомный цвет в js
rand_color = function() { return '#' + (Math.round(Math.random() * Math.pow(2, 24))).toString(16); }
вторник, 19 октября 2010 г.
среда, 13 октября 2010 г.
ссылка: mongodb основы map/reduce
Map-Reduce Basics: очень неплохая статья об агрегировании данных в MongoDB с помощью map/reduce.
понедельник, 27 сентября 2010 г.
Python: парсим дату
Иногда достаточно напряжной задачей бывает парсинг даты или времени. Это часто происходит совсем не в силу сложности задачи, а просто от отсутствия понимания, что здесь никакого велосипеда изобретать не нужно, а просто надо правильно использовать ресурсы стандартной библиотеки питона (), которые предлагают элегантные способы решения данной задачи.
Вашему вниманию предлагается ненапряжный (оттяжный) способ парсинга даты в питоне
Вашему вниманию предлагается ненапряжный (оттяжный) способ парсинга даты в питоне
datetime.strptime(sys.argv[1], '%H:%M')
С помощью которого можно сделать, например, простой-простой будильник (простой-простой, потому что будет работать в рамках одной даты, например, с 3 ночи до 7 утра, что бывает достаточно для программиста, админа или еще какого-нибудь гика).
#-*- coding: UTF-8 -*- import time import os import sys from datetime import datetime def play(): command = "totem ~/bin/alarm.pls >/dev/null 2>/dev/null" os.popen(command) def main(): try: while datetime.now().time() < datetime.strptime(sys.argv[1], '%H:%M').time(): time.sleep(1) except: print "Invalid hour:minute value!" finally: play() return if __name__ == "__main__": main()
понедельник, 13 сентября 2010 г.
День программиста-2010
Поздравляем программистов всех стран с их профессиональным праздником - днем программиста! Вот вам указ об официальном празднике: "О дне программиста".
Пусть даже разбег дат у нас небольшой - 13 сентября в простой год, о 365 днях, и 12 сентября - в високосный, о 366), мы все равно запасли для вас разные способы узнать, когда же он будет, на таких языках программирования как Python и JavaScript (хотели бы сами получить варианты на хаскелле и каком-нибудь брейнфаке):
python:
javascript:
* А эту функцию так мы вообще выполним:
Пусть даже разбег дат у нас небольшой - 13 сентября в простой год, о 365 днях, и 12 сентября - в високосный, о 366), мы все равно запасли для вас разные способы узнать, когда же он будет, на таких языках программирования как Python и JavaScript (хотели бы сами получить варианты на хаскелле и каком-нибудь брейнфаке):
python:
from datetime import date, timedelta def prog_date(): today = date.today() return today.replace(month=1, day=1) + timedelta(256) if __name__ == '__main__': print prog_date()
javascript:
function prog_date() { today = new Date(); today.setMonth(0, 1); today.setDate(256); return today; }
* А эту функцию так мы вообще выполним:
Подписаться на:
Сообщения (Atom)