Послушал предпоследний подкаст Radio-t и в месте где ведущие жаловались на невозможность сделать бекап документов из Google Docs, и опасность потери всех документов я разволновался. В то что невозможно сделать бекап я не поверил, но сделать бекап всетаки решился.
Усомнился в невозможности сделать бекап потому что я то знаю про существование проекта Data Liberation где рассказано как сделать бекап/забрать свои данные с любого Google-проекта. Касательно бекапа Google Docs описано здесь. В двух словах — выделяем все документы чекбоксами, идем в меню More Actions -> Export, настраиваем экспорт и скачиваем. Буквально пару кликов.
Единственная проблема — кодировка! Вот так выглядят мои документы в названии которых есть русский текст. Внутри документа русский текст отлично экспортируется.
P.S. заодно узнал что у меня там 141 документ :).
December 20, 2009
December 10, 2009
Как получить директорию из которой запускается bash скрипт?
Ух, давно не писАл в свой блог. Заметил что иногда обращаюсь к своим же постам чтобы посмотреть решение о котором писал ранее. Вот и сейчас решил запостить коротенькую заметочку.
Итак, пишу я bash скрипт для автоматизации всяких deployment задач. Долго мучался чтобы правильно определить папку в которой лежит запускаемый скрипт. `pwd` выдает директорию из которой запускается команда (например если я нахожусь в папке /home/user и запускаю скрипт как ./bin/script.sh, то ROOT_DIR=`pwd` будет иметь значение /home/user вместо /home/user/bin), а ROOT_DIR=$0 вернет относительный путь (в нашем примере ./bin/script.sh)
Найдя решение в одном из своих старых скриптов, подумал что создатели Bash курили то же что и создатели Perl. Решение краткое, но придумать его не так просто.
Теперь в переменной ROOT_PATH будет путь к директории в которой лежит скрипт, и нам не стоит задумываться из какой директории запускать скрипт чтобы избежать неожиданных проблем.
Happy Coding .
Итак, пишу я bash скрипт для автоматизации всяких deployment задач. Долго мучался чтобы правильно определить папку в которой лежит запускаемый скрипт. `pwd` выдает директорию из которой запускается команда (например если я нахожусь в папке /home/user и запускаю скрипт как ./bin/script.sh, то ROOT_DIR=`pwd` будет иметь значение /home/user вместо /home/user/bin), а ROOT_DIR=$0 вернет относительный путь (в нашем примере ./bin/script.sh)
Найдя решение в одном из своих старых скриптов, подумал что создатели Bash курили то же что и создатели Perl. Решение краткое, но придумать его не так просто.
#!/usr/bin/env bash ROOT_PATH=$(cd $(dirname $0) && pwd); echo $ROOT_PATH;
Теперь в переменной ROOT_PATH будет путь к директории в которой лежит скрипт, и нам не стоит задумываться из какой директории запускать скрипт чтобы избежать неожиданных проблем.
Happy Coding .
October 2, 2009
Индейка, бык и дерьмо
Индейка говорила с быком. «Я мечтаю забраться на вершину дерева, - вздыхала она, - но у меня так мало сил».
«Почему бы тебе не поклевать мой помет? – отвечал бык, - в нем много питательных веществ».
Индейка склевала кучку помета, и это действительно дало ей достаточно сил, чтобы забраться на нижнюю ветку дерева. На следующий день, съев еще, она достигла второй ветки. Наконец, на четвертый день, индейка гордо сидела на вершине дерева. Там ее заметил фермер и сбил выстрелом из ружья.
Мораль истории: манипуляции с дерьмом могут помочь вам забраться на вершину, но не удержат вас там.
Больше мудрости здесь
«Почему бы тебе не поклевать мой помет? – отвечал бык, - в нем много питательных веществ».
Индейка склевала кучку помета, и это действительно дало ей достаточно сил, чтобы забраться на нижнюю ветку дерева. На следующий день, съев еще, она достигла второй ветки. Наконец, на четвертый день, индейка гордо сидела на вершине дерева. Там ее заметил фермер и сбил выстрелом из ружья.
Мораль истории: манипуляции с дерьмом могут помочь вам забраться на вершину, но не удержат вас там.
Больше мудрости здесь
September 28, 2009
Apple с iPhone и Лебедев с его изюминкой
Сегодня один мой знакомый товарищ прислал вот такую цитату "гуру дизайна" рунета
Кроме смеха это высказывание ничего не вызвало, смеха не над главной страницей Apple, а над товарищем Артемием. Вот и решил вставить свои 5 копеек, да и за Apple то обидно :).
Сразу скажу что к "творчеству" Лебедева всегда относился как к производству гумуса на фермах австралии, ну не вижу я ничего хорошего в том что он делает, хоть застрелите. Единичные случаи есть, но это не то из-за чего он может быть тем кем его считают. С другой стороны, не касающейся его дизайнерской деятельности, у Темы обычно разумные мысли. Например мне понравилось вот это видео, в которой я полностью согласен со стороной Темы. Таким образом как человек и предприниматель он неплохой человек.
Теперь по сути вопроса. Тема, ты забыл указать стрелочкой в каком месте iPhone "говено отрендереный", ты бы хоть своюговняшку изюминку отрендерил нормально
ато похоже что после того как ты ее отрендерил в детстве так руки не дошли заменить на более современную. Наверное во времена производства этой изюминки твой рост как профессионального дизайнера был уже на закате.
Пошел на последние сайты сделаные в студии Лебедева. Вы посмотрите на эти убожества
Поклонники Темы, можете меня закидать гнилыми помидорами если считаете что я не прав. Хотя нет, вы должны дать мне по ебалу кочергой (ну как ваш кумир предписал).
„Захожу на сайт «Эппла» и что вижу? Какая-то рахитная трехмерная поебень. Это главная страница apple.com, чуваки. Говено отрендеренный айфон, ебланическая карта. У нас за такое в студии просто сразу кочергой по ебалу дают.“Первоисточник со скриншотами того что он там увидел здесь.
— Артемий Лебедев
Кроме смеха это высказывание ничего не вызвало, смеха не над главной страницей Apple, а над товарищем Артемием. Вот и решил вставить свои 5 копеек, да и за Apple то обидно :).
Сразу скажу что к "творчеству" Лебедева всегда относился как к производству гумуса на фермах австралии, ну не вижу я ничего хорошего в том что он делает, хоть застрелите. Единичные случаи есть, но это не то из-за чего он может быть тем кем его считают. С другой стороны, не касающейся его дизайнерской деятельности, у Темы обычно разумные мысли. Например мне понравилось вот это видео, в которой я полностью согласен со стороной Темы. Таким образом как человек и предприниматель он неплохой человек.
Теперь по сути вопроса. Тема, ты забыл указать стрелочкой в каком месте iPhone "говено отрендереный", ты бы хоть свою
ато похоже что после того как ты ее отрендерил в детстве так руки не дошли заменить на более современную. Наверное во времена производства этой изюминки твой рост как профессионального дизайнера был уже на закате.
Пошел на последние сайты сделаные в студии Лебедева. Вы посмотрите на эти убожества
- http://www.felixzawojski.ru/ — зайдя на этот сайт никогда не подумал что этот сайт сделал "лучший дизайнер" России.
- http://www.gazprom.ru/ — ну делал сайт для экономического кита России, ну меню то хоть сделал нормальное, ато непонятно что это, облако тегов? последний твит из их твитера? байка для посетителей?
- http://www.oversun.ru/ — Ой, где это я?
- И так далее, там их много :)
September 23, 2009
Блокируем всплывающие окна от Snapshots
Вам тоже надоели и раздражают вот эти вот всплывающие окна?
Тогда мы идем к вам.
Для меня это примерно как раньше были попапы с рекламой. Может кому-то это нравится, но мне точно нет. Как это заблокировать? Да просто. Добавляем строчку
UPDATE: Здесь можно подсмотреть где находится файл hosts для вашей операционной системы.
Для меня это примерно как раньше были попапы с рекламой. Может кому-то это нравится, но мне точно нет. Как это заблокировать? Да просто. Добавляем строчку
127.0.0.1 spa.snap.comв файл /etc/hosts на OS X и остальных Unix подобных системах и в C:\windows\system32\drivers\etc\hosts в Windows. Что происходит в этом случае? Просто браузер не подгрузит JavaSctript файл который и делает эти "навороты".
UPDATE: Здесь можно подсмотреть где находится файл hosts для вашей операционной системы.
August 28, 2009
Чистим дубликаты в таблице MySQL
Оптимизируя таблицы в довольно большой базе обнаружил что в одном месте небыло уникального индекса. Т.е. требовалось чтобы 2 поля вместе были уникальные. Добавляется он просто:
ALTER TABLE tablename ADD UNIQUE (`first_id`, `second_id`);Проблема в моем случае стала ребром потому что были найдены неуникальные записи, чего и не должно было быть, и чего можно было ожидать. Гугл подсказал много разных решений. В основном они сводились к 2 решениям
- созданию временной таблицы, переносу туда уникальных данных, удаление старой таблицы и переименование новой
- писанине скрипта который все поправит
ALTER IGNORE TABLE tablename ADD UNIQUE (`shared_feed_id`, `post_id`);Добавляем всего одно поле и получаем то что надо. Теперь если при создании индекса встречаются неуникальные поля, они удаляются. Вот такое простое решение не совсем сложной задачи и кривых скриптов :) Happy coding !
August 24, 2009
Django QuerySet API - ограничение выборки по not equal
Продолжим с Django. В стандартном QuerySet API существует большое количество параметров выборки такие как EXACT, CONTAINS, IN, GT, GTE и т.д. Остальные и документацию, если еще кто-то из интересующихся темой не читал, можно прочитать по приведенным ссылкам.
Проблема встречается тогда, когда хочется найти NE что эквивалентно not equal, т.е. когда мы хотим сделать выборку записей в которых определенное поле "не равно" какому то значению. Дело в том что этого почему то нет в queryset api.
Немножко погуглив можно найти решение, а можно его подсмотреть прямо здесь :), причем есть вроде несколько вариантов в последних версиях Django (на момент написания это 1.1). А вот и пример решения задачи.
В результате этого мы получим примерно такой запрос (в моем случае на примере MySQL бекэнда):
Happy coding!
Проблема встречается тогда, когда хочется найти NE что эквивалентно not equal, т.е. когда мы хотим сделать выборку записей в которых определенное поле "не равно" какому то значению. Дело в том что этого почему то нет в queryset api.
Немножко погуглив можно найти решение, а можно его подсмотреть прямо здесь :), причем есть вроде несколько вариантов в последних версиях Django (на момент написания это 1.1). А вот и пример решения задачи.
examples = ExampleModel.objects.filter( ~Q(user=request.user), is_active=True )
В результате этого мы получим примерно такой запрос (в моем случае на примере MySQL бекэнда):
SELECT `app_examplemodel`.`id`, `app_examplemodel`.`user_id`, `app_examplemodel`.`is_active` FROM `app_examplemodel` WHERE (NOT (`app_examplemodel`.`user_id` = 1 ) AND `publishers_sites`.`is_active` = True )
Happy coding!
August 18, 2009
Ограниченый QuerySet для админ интерфейса Django
Django очень удобный и очень гибкий фреймворк для создания сайтов. Столкнувшись с задачей ограничения выборки для админ интерфейса я не поверил что этого нельзя сделать. На практике задача заключалась в том что мне нужно было показывать и давать возможность редактировать записи относящиеся только к группе в которой состоит текущий пользователь.
В документации по админу на официальном сайте Django ничего по этому поводу не сказано. Ну раз ничего в документации нет, значит полезем в код. Оказывается это предусмотреный функционал, только вот почему-то он не задокументирован. Таким образом переопределив метод queryset в классе админа можно скрыть объекты которые нельзя/ненужно показывать текущему пользователю.
В моем случае это выглядело так:
В документации по админу на официальном сайте Django ничего по этому поводу не сказано. Ну раз ничего в документации нет, значит полезем в код. Оказывается это предусмотреный функционал, только вот почему-то он не задокументирован. Таким образом переопределив метод queryset в классе админа можно скрыть объекты которые нельзя/ненужно показывать текущему пользователю.
В моем случае это выглядело так:
class MyAdmin(admin.ModelAdmin):
#....
def queryset(self, request):
super_qs = super(MyAdmin, self).queryset(request)
qs = super_qs.filter(group__in=request.user.groups.all())
return qs
August 9, 2009
Секрет популярности поисковика Bing
Несколько дней назад вывел на экран лог файл одного из своих сайтов, смотрел на логи и наблюдал кто, откуда и куда ходит. Заметил интересную штуку, которой я решил поделиться после прослушивания подкаста Radio-T потому что там упомянули про популярность бинга. Этот поисковик от Microsoft якобы набрал почти 10%.
Как говорится в статье на компуленте, бинг обработал 9.4% поисковых запросов сделаных с территории США. Никто кроме самого микрософта не может определить обрабатывал ли бинг столько запросов, поэтому скорее всего речь идет о преходах от Bing на сайты.
Как вообще эти статистические компании определяют такие данные для меня всегда была закадка. Но технически сайт с которого приешел посетитель на другой сайт определяется по заголовки. Т.е. это могут знать только на стороне бинга и на стороне сайта на который приходят посетители. Ну да ладно, пусть будет загадка. Кстати если кто-то знает как они это делают расскажите в комментариях.
Собственно в чем же секрет популярности? Так вот когда я просматривал логи заметил что резко появился трафик от бинга. Первые сомнительный мысли появилиь когда я попробовал загрузить страницу с которой перешел пользователь и не видел в выдаче и на соседних страницах моего сайта. На следующий день я не заметил в статистике сайта в Google Analytics этих переходов, т.е. бинга там вообще небыло. Заглянув в логи, отфильтровав строки в которых был бинг получил вот такие данные (строки с урлом куда ходит народ я удалил). Интересная штука в IP адресах. Вот информация по одному из них где видно что IP микрософтовского датацентра.
По логам можно сказать что якобы это бот индексирует контент. Нет! Потому что
Так что вот мой прогноз рецепта популярности бинга. Снова M$ пытается надурить мир. Этот метод я уверен работает. Больше пишут о бинге (оо смотрите... бинг набирает обороты... круто!) и больше растет реальная аудитория. Интересно как дальше дела пойдут :)
Как говорится в статье на компуленте, бинг обработал 9.4% поисковых запросов сделаных с территории США. Никто кроме самого микрософта не может определить обрабатывал ли бинг столько запросов, поэтому скорее всего речь идет о преходах от Bing на сайты.
Как вообще эти статистические компании определяют такие данные для меня всегда была закадка. Но технически сайт с которого приешел посетитель на другой сайт определяется по заголовки. Т.е. это могут знать только на стороне бинга и на стороне сайта на который приходят посетители. Ну да ладно, пусть будет загадка. Кстати если кто-то знает как они это делают расскажите в комментариях.
Собственно в чем же секрет популярности? Так вот когда я просматривал логи заметил что резко появился трафик от бинга. Первые сомнительный мысли появилиь когда я попробовал загрузить страницу с которой перешел пользователь и не видел в выдаче и на соседних страницах моего сайта. На следующий день я не заметил в статистике сайта в Google Analytics этих переходов, т.е. бинга там вообще небыло. Заглянув в логи, отфильтровав строки в которых был бинг получил вот такие данные (строки с урлом куда ходит народ я удалил). Интересная штука в IP адресах. Вот информация по одному из них где видно что IP микрософтовского датацентра.
По логам можно сказать что якобы это бот индексирует контент. Нет! Потому что
- есть отдельные запросы msn-бота
- эти боты не дают referer заголовка
- у бота который собирает контент для индексации специальный user-agent, здесь же он даже генерируется случайно
- UPDATE: и самое главное, поисковый робот никогда не запрашивает статику (картинки, JS и CSS файлы), а этот запрашивает.
- UPDATE: Все запросы идут из одной подсети - датацентра микрософт.
Так что вот мой прогноз рецепта популярности бинга. Снова M$ пытается надурить мир. Этот метод я уверен работает. Больше пишут о бинге (оо смотрите... бинг набирает обороты... круто!) и больше растет реальная аудитория. Интересно как дальше дела пойдут :)
July 21, 2009
Google это не только поисковик
В последнее время я начал замечать следующую ситуацию на своих сайтах - заходит человек на сайт, просматривает, как правило, одну страницу (иногда пару страниц прокликает), идет на Google, вводит там название сайта, кликает в выдаче гугла и попадает снова на этот же сайт.
Казалось бы, ну что тут такого. С кем не бывает. СЕОшники понимашь изучают. Но немного поразмыслив над этим фактом подумалось что нет, не СЕОшники... И вот что пришло мне в голову.
Совершая такие действия посетитель:
Есть что-то добавить в этот список?
Казалось бы, ну что тут такого. С кем не бывает. СЕОшники понимашь изучают. Но немного поразмыслив над этим фактом подумалось что нет, не СЕОшники... И вот что пришло мне в голову.
Совершая такие действия посетитель:
- Проверяет уровень доверия к сайту. Вполне логично что если пользователь не увидит на первом месте проверяемого сайта или как минимум на первой странице выдачи. Еще лучше если сайт будет дополнен блоком который в гугле называют Sitelinks.
- Google антивирус. При переходе на сайт который "раздает" всякое вредоносное ПО Google оповещает пользователя об опасности заразиться. Таким образом гугл выполняет роли антивируса. Конечно это не гарантия, но как быстрая простая проверка годится.
- Борьба с поддельными сайтами. Бродя по интернету случайно по линкам мы можем попасть на сайты-подделки которые клонируют популярные сайты и собирают пароли. Введя в гугле название этого популярного сайта мы точно попадем на оригинальный сайт.
Есть что-то добавить в этот список?
July 20, 2009
Получение последнего номера ревизии в Subversion
Казалось бы тривиальная задача - получить максимальный номер ревизии из subversion репозитория. Но в самом SVN нет такой возможности. Те кто пишут билд скрипты понимают зачем это необходимо. Мне это понадобилось для скрипта который автоматически обновляет проект на сервере. Вернее стало это необходимо давно, но тогда я реализовал это как мог, но реализовал. А сейчас нашел более человеческое решение.
Замените HOST и APPNAME на свои, либо вообще URL замените на путь в локальной системе - в зависимости как у вас организован доступ к репозиторию. Дальше у меня это завернуто в bash скрипт, вы используйте как вам захочется. Надеюсь кому-нибудь пригодится :)
Happy coding!
svn info svn://HOST/APPNAME/trunk --revision HEAD | grep "Revision:" | sed s/Revision:\ //
Замените HOST и APPNAME на свои, либо вообще URL замените на путь в локальной системе - в зависимости как у вас организован доступ к репозиторию. Дальше у меня это завернуто в bash скрипт, вы используйте как вам захочется. Надеюсь кому-нибудь пригодится :)
Happy coding!
Labels:
repository,
subversion,
svn,
vcs,
version controll
June 15, 2009
Особенность событий в jQuery.
Насмотрелся всяких тут умных людей
и полез искать где бы соптимизировать в своих скриптах.
Сегодня замеряя скорость выполнения тех или иных кусков кода JS скриптов заметил такую штуку в случае добавления событий. Есть вот такой вариант №1.
и вариант №2
Кажется ничего особо их не отличает, если вы знакомы с jQuery. Но есть больше НО!. Каждый раз при выполнении кода из варианта №2 в очередь событий добавляется копия функции передаваемой как параметр. Соответственно в случае возникновения события "change" ("change" в приведенном случае) наша функция выполнится столько раз, сколько она была добавлена. Лично я этого незнал, но и таких случаев с многократным добавлением событий я пока что не нашел.
Так что используйте это дело аккуратно.
и полез искать где бы соптимизировать в своих скриптах.
Сегодня замеряя скорость выполнения тех или иных кусков кода JS скриптов заметил такую штуку в случае добавления событий. Есть вот такой вариант №1.
$('#id').change(Obj.EventMethod);и вариант №2
$('#id').change(function(){
console.log("CHANGE");
});Кажется ничего особо их не отличает, если вы знакомы с jQuery. Но есть больше НО!. Каждый раз при выполнении кода из варианта №2 в очередь событий добавляется копия функции передаваемой как параметр. Соответственно в случае возникновения события "change" ("change" в приведенном случае) наша функция выполнится столько раз, сколько она была добавлена. Лично я этого незнал, но и таких случаев с многократным добавлением событий я пока что не нашел.
Так что используйте это дело аккуратно.
Labels:
ajax,
browser,
events,
JavaScript,
jquery,
performance,
speed,
производительность,
скорость,
События
June 3, 2009
Интересное решение для noscript
Нашел в исходниках Google Reader интересное решение для noscript.
Эта штука скрывает все дивы на странице, и показывает только определенный тег <p>, в котором в данном случае написано что необходимо включить поддержку JavaScript в браузере и попробовать еще раз. Уже вставил и заюзал у себя такое...
<noscript><style type="text/css">
div {display: none;}
#noscript {padding: 3em; font-size: 130%;}
</style>
<p id="noscript">
JavaScript must be enabled in order for you to use Reader.
However, it seems JavaScript is either disabled or not supported by your
browser. To use Reader, enable JavaScript by changing your browser options,
then <a href="/reader/">try again</a>.</p>
</noscript>Эта штука скрывает все дивы на странице, и показывает только определенный тег <p>, в котором в данном случае написано что необходимо включить поддержку JavaScript в браузере и попробовать еще раз. Уже вставил и заюзал у себя такое...
June 1, 2009
Проверка вхождения строки или числа в массив в стиле Python
В Python есть очень приятная возможность проверить вхождение объекта в список. Выглядит это примерно вот так:
Согласитесь, просто и красиво. А вот в JavaScript нет такой штуки. И я решил написать для себя небольшое расширение объектов Number и String для JavaScript которое позволяет делать проверку похожим способом.
if 'a' in ['a','b','c']:
print "YES"
else:
print "NO"Согласитесь, просто и красиво. А вот в JavaScript нет такой штуки. И я решил написать для себя небольшое расширение объектов Number и String для JavaScript которое позволяет делать проверку похожим способом.
March 6, 2009
Замена всех подстрок в JavaScript. Пишем метод replaceAll()
Существует ряд наиболее стандартных задач в программировании которые реализованы в ядре языка. Некоторые из них не реализованы напрямую. Например задача замены всех вхождений подстроки в строку в JavaScript. Первое что приходит в голову это вызвать метод replace у строки.
Но, существует НО. Этот метод заменит только первую найденную подстроку, а мы хотим заменить все. Метода replaceAll не существует. Вызывать метод replace в цикле пока не будут заменены все подстроки — не наш путь. Решение рядом.
var myString="q w e r qq w e q";
myString = myString.replace('q', 'Q');Но, существует НО. Этот метод заменит только первую найденную подстроку, а мы хотим заменить все. Метода replaceAll не существует. Вызывать метод replace в цикле пока не будут заменены все подстроки — не наш путь. Решение рядом.
Labels:
JavaScript,
Кодинг,
ооп
February 18, 2009
Как почистить скролл у Apple Mighty Mouse?
Сегодня досталась мне для теста мышка Apple Mighty Mouse. Не то что бы для теста, это я решил попробовать попользоваться самым худшим продуктом от Apple, ну так считается вроде. Взял я ее у Виталия Колесника, который тоже сказал что это ужас какой-то. И вот задача - скролл работает только вверх, вниз не крутится нивкакую. Ну засорилась, обычное дело.
Самый банальный метод разобрать и почистить. Для меня, инженера, это было бы не проблемно и довольно привычно, но 1) мышка не моя, поэтому разбирать совсем нежелательно. 2) нет подходящей отвертки под рукой и 3) нижняя часть этой мышки посажена на клей. Пришлось искать походящие способы.
Самый банальный метод разобрать и почистить. Для меня, инженера, это было бы не проблемно и довольно привычно, но 1) мышка не моя, поэтому разбирать совсем нежелательно. 2) нет подходящей отвертки под рукой и 3) нижняя часть этой мышки посажена на клей. Пришлось искать походящие способы.
February 8, 2009
Дибилами растем, дибилов производим
Смотрю, как студенты понтуются, кто из них больше ни фига не делал и всё сдал.
Эх...
Когда я был студентом, я сдавал право одной очень милой женщине. Она была практикующим юристом, и я ожидал, что такой специалист меня сейчас будет гонять от и до по всему конспекту.
Она посмотрела на меня и, ничего не спрашивая, поинтересовалась:
- Оценку вам какую ставить?
- Э... Пять хотелось бы
- Отлично, - сказала она, и стала писать в зачётке
- А вы что, даже ничего спрашивать не будете? - удивился я.
Она оторвалась от заполнения зачётки, внимательно посмотрела на меня и сказала:
- Запомните, молодой человек, чем меньше вы знаете, тем более ценна я как специалист.
Эта фраза мне запомнилась на всю жизнь и больше я не страдал фигнёй во время занятий.
И сейчас самое время мне, уже доценту и одновременно практикующему проектировщику зданий, повторить то же самое:
Господа студенты, не учитесь, пожалуйста! Старайтесь как можно больше получить на халяву! Чем меньше вы знаете по окончании института, тем более ценен я как специалист и тем большую зарплату я могу потребовать за свои услуги!
Вот эта цитата (источник) попала ко мне в гугл ридере, ее расшарил Макс Крайнов, уважаемый в русской блогосфере человек можно сказать обучающий своих читателей правильно жить. Не могу представить как ему понравилась эта цитата, поэтому решил высказать свое мнение по этому поводу.
February 3, 2009
Удалить все таблицы в базе MySQL одной строкой
Как удалить одной строкой (в том смысле что не писать кучу запросов типа DROP TABLE tablename;) все таблицы в базе данных MySQL. Кажется что может быть проще чем DROP ALL TABLES;. Ан нет! Нет такого запроса. Чтобы найти решение не пришлось долго рыться в бескрайнем интернете :) Делюсь решением с вами.
via
Второе решение этой задачи не заставило себя долго ждать
via. Какие то проблемы с этим вариантом есть с Windows... ну а кто этим занимается в винде? :)
Пользуйтесь!
mysql --silent --skip-column-names -u[USERNAME] -p[PASSWORD] [DATABASE] -e "show tables" | \
gawk '{print "drop table " $1 ";"}' | mysql -u [USERNAME] -p[PASSWORD] [DATABASE]via
Второе решение этой задачи не заставило себя долго ждать
mysqldump -u[USERNAME] -p[PASSWORD] --add-drop-table --no-data [DATABASE] | \ grep ^DROP | mysql -u[USERNAME] -p[PASSWORD] [DATABASE]
via. Какие то проблемы с этим вариантом есть с Windows... ну а кто этим занимается в винде? :)
Пользуйтесь!
January 27, 2009
Используем всю мощь TextMate вместе со Spaces
Я недавно заметил что TextMate неправильно ведет себя если использовать его на разных десктопах. Например если я работаю с 2 проектами одновремененно (как минимум 2 проекта в TextMate открыты), мне хочется воспользоваться преимуществами Spaces. Поэтому я распределяю окна относящиеся к разным проектам на разные десктопы.
В случае с TextMate этот так сказать "хак" работает не совсем как ожидается. Дело в том что если перенести одно окно на другой десктоп, то все остальные тоже туда же перекинутся. Соответственно разные проекты невозможно раскинуть по разным десктопам.
Вот решил разобраться в чем дело. Написал тикет. Оказалось что это проблема OS X с приложениями использующие drawer. Drawer это такая штука на подобие сайдбара, но он как бы выезжает из-за приложения. На скриншоте видно лучше.
Получается задача имеет 2 решения - 1) поправить баг (что практически не возможно для меня), 2) лишиться этого drawer-a. Выход был прост. Оказывается есть плагин для TextMate который называется MissingDrawer. Этот плагин заменяет drawer обычным сайдбаром. В результате это выглядит так
и работает со Spaces как и ожидается.
Happy coding!
В случае с TextMate этот так сказать "хак" работает не совсем как ожидается. Дело в том что если перенести одно окно на другой десктоп, то все остальные тоже туда же перекинутся. Соответственно разные проекты невозможно раскинуть по разным десктопам.
Вот решил разобраться в чем дело. Написал тикет. Оказалось что это проблема OS X с приложениями использующие drawer. Drawer это такая штука на подобие сайдбара, но он как бы выезжает из-за приложения. На скриншоте видно лучше.
Получается задача имеет 2 решения - 1) поправить баг (что практически не возможно для меня), 2) лишиться этого drawer-a. Выход был прост. Оказывается есть плагин для TextMate который называется MissingDrawer. Этот плагин заменяет drawer обычным сайдбаром. В результате это выглядит так
и работает со Spaces как и ожидается.
Happy coding!
Labels:
conding,
mac,
Mac OS X,
os x,
programming,
python,
spaces,
TextMate,
Кодинг,
Оптимизация,
Рабочая среда,
События
January 25, 2009
Французы решили учить английский
Как многие наверное знают французы не любители иностранных языков и иностранцев. Сегодня уведиел репортаж по BBC по этой теме. Суть в том что их министр образования подумал и решил что в мире все большую популярность набирает английский язык, и что надо больше внимания уделить изучению английского в системе образования.
Собственно не этот факт подтолкнул меня написать, в это как бы нет ничего особенного, современный тренд так сказать :). Поразило то как они его изучают. Там небыло показано как дети в школе сидят на уроке английского языка, хотя такие почти уверен есть. Они его изучают, углубляют, и практикуют на уроке физкультуры! Преподаватель дает указания на английском, и дети пытаются общаться на английском. Мне кажется это в разы лучше чем просто изучение английского на уроках английского языка. Очень хорошее решение.
Собственно не этот факт подтолкнул меня написать, в это как бы нет ничего особенного, современный тренд так сказать :). Поразило то как они его изучают. Там небыло показано как дети в школе сидят на уроке английского языка, хотя такие почти уверен есть. Они его изучают, углубляют, и практикуют на уроке физкультуры! Преподаватель дает указания на английском, и дети пытаются общаться на английском. Мне кажется это в разы лучше чем просто изучение английского на уроках английского языка. Очень хорошее решение.
Labels:
Оффтоп
Subscribe to:
Posts (Atom)






