среда, 18 февраля 2009 г.

Еще раз о Softlogic

И так, полет продолжается. С сервисом yourmart.ru вышла некоторая стагнация. Без армии модераторов выйти на хороший уровень посещений пока не получается. Но есть пара идей, как этого добиться. Время покажет, на сколько эти идеи верны.

Обновился сайт нашей компании - www.softlogic.ru. Размещена информация о наших услугах и продуктах. В первую очередь, это система для автоматизации вузов "Эврика". Там же есть демка, так что можно попробовать систему "не отходя от кассы". Система большая и неспециалисту будет сложно сразу разобраться в функционале демо-версии. Однако, демка дает довольно детальное представление о продукте и его возможностях.

Также, через сайт продвигаем наши услуги в области автоматизации бизнеса. Пока онлайн-реклама не показывает себя действенной. Посмотрим, что будет дальше. Но, видимо, в России привлечение клиентов "по- знакомсту" всегда будет оставаться самым действенным методом. Это несколько огорчает, ибо наше решение довольно качественное и может экономить компаниям среднего масштаба очень много денег и времени. А наши связи, как и у любой молодой компании, ограничены.

Тем не менее, мы существуем уже более двух лет. И это, само по себе, является отличным показателем :).

понедельник, 8 декабря 2008 г.

Yourmart.ru: год спустя

Давно я не писал о нашем сервисе. Считаю необходимым восполнить этот пробел.

Yourmart.ru: что мы делаем, и для чего

Итак, напомню yourmart.ru - сервис поиска товаров и услуг среди предложений онлайн магазинов. Несмотря на популярность тематики поиска товаров, у сервиса есть нетипичные для сферы черты. Во-первых, он бесплатен для магазинов. Во-вторых имеет очень неплохой поиск по товарам. В том числе, и по самым необычным.

В нашу задачу входило сделать качественный бесплатный сервис. Почему бесплатный? Данной моделью мы планировали привлечь магазины для размещения товаров. И теперь можно сказать, что это работает. На настоящий момент зарегистрировалось более 500 магазинов, и это очень неплохой результат.

Что же касается поиска, нам удалось сделать его необычным и качественным. Необычность заключается в том, что мы используем по максимуму лингвистические модели при поиске товара. Другими словами, на основе этих моделей мы определяем:
  1. какие товары предоставил магазин;
  2. какой именно товар ищет пользователь.
Сопоставляя эту информацию, пользователю отображается результат. В отличии от традиционных поисковых сервисов, мы не ищем товар по частоте ключевых слов, а определяем значащие слова (искомый товар) по морфологическим и синтаксическим признакам.

В этом и заключается "качественность" поиска. Он позволяет нам не выдавать, к примеру, мясорубки с функцией соковыжималки, на запорос "соковыжималка", а отображать в результатах только соковыжималки. И достигается это не за счет армии модераторов, а благодаря оригинальным алгоритмам разбора предоставляемой магазинами информации.

Что нового

Что же изменилось, с момента последнего поста. Без преувеличения - все. Это новый сервис с новым интерфейсом, новой моделью поиска, геотаргетингом и новыми функциями для магазинов.

Интерфейс


От интерфейса, основанного на флеше мы сразу отказались. История с небезызвестным top4top.ru показала, что мы были на 100% правы. Флеш-интерфейс, хотя и очень функционален, очень тяжел. И главное, он непривычен пользователю. Замена на более легкий html+javascript прошла относительно легко, не считая многочисленных багов IE6-7.


Интерфейс прост. Мы постарались убрать все лишнее, оставив только необходимые и полезные элементы.

Поиск

Сервис стал значительно лучше искать и обрабатывать товарные предложения. Кроме непосредственных результатов поиска, отображается группа вспомогательных фильтров. Она позволяет уточнить результаты по категории, ценовой группе и производителю.

Фильтры категорий очень интересны тем, что они строятся динамически в зависимости от найденных товаров. Это позволяет классифицировать самые различные продукты. К примеру, попробуем найти "крем". В категориях Мы получим:
  • защитные кремы;
  • увлажняющие кремы;
  • ночные кремы;
  • кремы для глаз;
  • и т.п.
Даже раскрученные платные сервисы не могут похвастаться такой функциональностью. Мы можем, и хвастаемся :).

Сравнение цен интернет-магазинов является основной задачей сервиса. Yourmart.ru позволяет сопоставлять цены магазинов на один и тот же товар. Предложения отображаются строго в порядке роста цены. Таким образом, наилучшее ценовое предложение находится всегда в топе.

Yourmart.ru содержит самые различные товары. Мы не ограничиваемся бытовой техникой, и размещаем галстуки, камины и даже ЭТО!
Посмотрите, какие красивые у нас запонки :).

Магазины

За год количество магазинов увеличилось с 80 до 500. Сейчас магазины размещают информацию намного более охотно. Введены специальные аккаунты, которые упрощают процесс регистрации и размещения предложений на сервисе. Мы продолжаем работать с интернет-магазинами и ожидаем дальнейший рост товарной базы.

Геотаргетинг

Сервис изначально разрабатывался с расчетом общероссийскую аудиторию.
Для удобства поиска товаров в своем городе, мы ввели систему геотаргетинга. Теперь, при поиске товаров в первую очередь отображаются местные магазины. Если же таких не найдено, происходит в других регионах, осуществляющих доставку в данный город.

В идеале, мы бы хотели, чтобы пользователи в регионах находили товары в онлайне так же просто, как это делают жители нашей славной столицы и Питера. Однако, региональная онлайн-торговля только формируется. По мере того, как будут созревать региональные интернет-магазины, мы будем включать их в индекс.

Планы

В самых ближайших планах - привлечение новых магазинов и продвижение сервиса среди интернет-покупателей. Улучшения поиска и интерфейса также являются основными приоритетами развития сервиса.


пятница, 14 ноября 2008 г.

О простых и хитрых регулярных выражениях

Есть задача:

Из всех строк вида
  • "лучший интернет-магазин"
  • "для интернет магазина"
  • "каталог интернет магазинов"
  • "магазин","
выбрать те, в которых встречается слово "магазин" в именительном падеже. При этом необходимо сопоставлять паттерн поиском регулярного выражения по всей строке (в python - метод search).

Решение:

Первый способ, который приходит в голову - запретить окончания слова:
магазин[^ауеыо]
Это отсеет слова типа "магазина", "магазинов" и т.п. Однако, паттерн отфильтрует и вариант "лучший интернет-магазин", так как слово "магазин" является последним в строке.
Немного попыхтев, пришел к простому решению:
магазин([^ауеыо]|$)
Работает, однако. Если вы найдете лучшее решение, чиркните мне пару строк в комментариях.

четверг, 9 октября 2008 г.

О том, как запусить Adwords Editor из под linux

Adwords Editor - очень полезный инструмент. И очень плохо, что у него нет сборки под Linux. Но wine нас спасет. Однако, есть плохая новость: для установки все же потребуется Windows. Лично я использовал вирутальную машину.

Итак, сценарий следующий:
  1. Устанавливаем Adwords Editor в винде (через msiexec в linux установка срывается)

  2. Копируем установленный пакет в директорию wine. Обычно: ~/.wine/drive_c/Program\ Files/

  3. Тянем из винды, каталога WINDOWS\SYSTEM32 две библиотеки:

    • msvcp71.dll

    • msvcr71.dll

    и кладем в ~/.wine/drive_c/windows/system32

  4. Теперь нам нужно указать wine, где искать остальные dll'ки. Для этого можно воспользоваться winecfg. Но можно и проще: скопировать все библиотеки из каталогов
    • ~/.wine/drive_c/Program Files/Google AdWords Editor/
    • ~/.wine/drive_c/Program Files/Google AdWords Editor/xulrunner/
    в ~/.wine/drive_c/windows/system32

  5. На этом все. Запускаем: wine ~/.wine/drive_c/Program\ Files/Google\ AdWords\ Editor/adwords_editor.exe
    и после 5-10 секунд тормозов появляется гуй.

вторник, 30 сентября 2008 г.

Простая репликация в Postgresql

Задача: сделать простую репликацию в Postgresql из мастер-таблицы одной БД в слейв-таблицу другой. Запуск репликации несколько раз в сутки по крону. Для такой задачи использование инструментов типа Slony-I было бы оверхедом. Ну что ж, python нам поможет.

Идея скрипта проста и прямолинейна. Шаг первый - считываем данные из таблиц (см функцию getfromdb). Далее, сопоставляем записи на основе ключей, и синхронизируем в четыре шага:
  1. удаляем записи, которые не находятся в мастер-таблицы;
  2. удаляем изменившиеся записи, маркируя записи мастер-таблицы для добавления;
  3. маркируем записи, находящиеся в мастер-таблице, но отсутствующие в слейв-таблице;
  4. добавляем маркированные записи из мастера в слейв.
Чтобы не усложнять скрипт, приняты два ограничения. Первое - таблицы должны иметь первичный ключ, на основании которого происходит сопоставление. При этом первичный ключ должен следовать первым в списке полей. Второе - реплицируемые поля мастер и слейв таблиц должны иметь одинаковые имена.
#!/usr/bin/env python
# -*- coding: utf-8 -*-

# Usage:
# sync('db_master', 'table_master', 'db_slave', 'table_slave', fields)
# where 'fields' is list of fields in tables to syncronize
#
# NOTE: first field in field list should be a key

import pg

HOST = 'localhost'
DBUSER = 'postgres'
DBPASS = 'postgres'

def getfromdb(db_name, table_name, fields):
# Forming fields
qfields = ''
for field in fields:
if qfields:
qfields += ', ' + field
else:
qfields = field
conn = pg.connect(db_name, HOST, 5432, None, None, DBUSER, DBPASS)
query = "SELECT %s FROM %s" % (qfields, table_name)
result = conn.query(query)
table = {}
for row in result.getresult():
table[row[0]] = row[1:]
conn.close()
return table

def sync(masterdb, mastertable, slavedb, slavetable, fields):
master_data = getfromdb(masterdb, mastertable, fields)
slave_data = getfromdb(slavedb, slavetable, fields)

slave_conn = pg.connect(slavedb, HOST, 5432, None, None, DBUSER, DBPASS)

table = []

# Remove outdated rows
for key, values in slave_data.items():
if key not in master_data:
print "Delete row id=%s" % key
query = "DELETE FROM %s WHERE %s = %s" % \
(slavetable, fields[0], key)
slave_conn.query(query)
elif master_data[key] != slave_data[key]:
print "Update row id=%s" % key
query = "DELETE FROM %s WHERE %s = %s" % \
(slavetable, fields[0], key)
slave_conn.query(query)
# Mark record to update
table.append([key] + list(master_data[key]))

# Mark new records
for key, values in master_data.items():
if key not in slave_data:
table.append([key] + list(values))
print "Insert row fid=%s" % key
# Insert new records
slave_conn.inserttable(slavetable, table)
slave_conn.close()

Пример использования. Следующий код реплицирует поля fields из мастер-таблицы table1 базы db1 в таблицу table2 базы db2. В списке полей f1 - ключевое поле.

fields = ('f1', 'f2', 'f3')
sync('db1', 'table1', 'db2', 'table2', fields)

Не уверен, что скрип будет хорошо работать на громадных таблицах, однако для остальных работает вполне неплохо.

среда, 9 июля 2008 г.

О регистрации ООО, ЗАО и ИП

Эта статья первая из цикла, который я планирую посветить вопросам предпринимательской деятельности. В этом цикле я хочу рассмотреть основные вопросы, с которым сталкивается предприниматель: регистрация юридического лица, работа с банком, внесение изменений в учредительные документы. Для человека незнакомого с этими процедурами, они кажутся сложными. Однако, при ближайшем рассмотрении все оказывается довольно просто, главное - понять основные принципы. Данная статья рассказывает об основных моментах регистрации юридического лица.

Я ориентируюсь на тех, кто хочет открыть свой бизнес, но не понимает как. Сейчас я иду по этому пути. Полтора года назад я с друзьями организовал ИТ-стартап, и определенный опыт уже накопился. Уверен, этот опыт может быть полезен тем, кто собирается создать организацию, но пока не понимает как.

Зачем регистрировать юридическое лицо


Регистрация полезна по нескольким причинам. Причина первая: большинству компаний работать с юридическими лицами удобней, чем с физическими. Особенно, это касается крупных организаций. Им неудобно работать "по-черному", делая перевод от частного лица, либо выплачивая наличными.

Причина вторая: юридическое лицо защищает ваши договоры. Это, пожалуй, объяснений не требует. Как только вы начинаете вести дела официально, в ваши с клиентом отношения включается третья сторона: арбитр в виде государственной юридической системы. К сожалению, это не дает стопроцентной гарантии от "кидалова". Но в этом случае значительно больше шансов отстоять дело в суде. Да и к договорам с юридическими лицами организации относятся более серьезно. Естественно, договоры можно заключать и с физическим лицом, однако в этом случае ваш клиент несколько проигрывает по налогам. По этому далеко не все организации заключают договоры с частными лицами.

Третья, и, пожалуй, основная - юридическое лицо рискует только своим уставным капиталом. К примеру, если в результате деятельности ООО с уставным капиталом в 10 тыс руб. пострадает его контрагент (клиент) на сумму 500 тыс руб., то последний в праве потребовать сумму, не превышающую 10-ти тысяч. Удобно, не так ли? В подобной ситуации у физического лица могли бы отсудить его имущество. К примеру, новую мазду, что уже не так приятно.

Что нужно знать


Создание юридического лица не такое уж большое дело, как считают многие. Попробуем в этом разобраться.

Все формы деятельности делятся на два больших класса: субъекты без образования юридического лица и субъекты, являющиеся юридическими лицами. Под мутным словом "субъект" здесь понимаются частные лица, организации, объединения и т.п., признаваемые нашим родным законодательством. К субъектам без образования юридического лица относится небезызвестная форма - ИП, ранее именовавшаяся БПЮЛ или ЧП.

Юридические лица в свою очередь делятся на коммерческие и некоммерческие. Отличаются они тем, что целью первых является получение прибыли, а целью вторых - что-то другое: благотворительность, окультуривание, борьба за права кого_угодно и т.п. Коль скоро мы решили зарабатывать деньги, остановимся на коммерческих организациях. В РФ существует несколько форм коммерческих организаций. Наиболее интересны для старта бизнеса следующие:
  • общество с ограниченной ответственностью (ООО)
  • акционерное общество - закрытое (ЗАО)
Есть также много других коммерческих форм деятельности, однако даже их перечисление выйдет за рамки данной статьи. Довольно неплохо это описано на wiki.

Что выбрать

При выборе организационно-правовой для создания ИТ-стартапа формы можно рассматривать следующие варианты:
  • Индивидуальный предприниматель (ИП)
  • Общество с ограниченной ответственностью (ООО)
  • Закрытое акционерное общество (ЗАО)
Без долгих рассуждений скажу, что большинство ИТ-стартапов создаются как ООО. Причина этому - возможность вести упрощенную систему налогообложения. В народе - упрощенку. А она действительно упрощает жизнь. Во-первых платим меньше налогов. Во-вторых, значительно проще (читай - дешевле) вести бухгалтерию, по сравнению с общей системой.

ИП также дает возможность вести упрощенную систему налогообложения. Однако ИП - это не юридическое лицо! Со всеми вытекающими последствиями, самое важное из которых: частное лицо рискует своим имуществом, в то время как ООО - только уставным капиталом (см раздел "Зачем регистрировать юридическое лицо). Кроме юридической стороны отличий от ООО у ИП, использующих упрощенку, не много. Разве что ИП удобней работать с наличностью. Если это не Ваш случай - тогда предпочтительней Общество с ограниченной ответственностью.

Теперь взглянем на форму деятельности с точки зрения отношения с партнерами. Когда вы один - все просто. Но кода в игру вступает команда, появляются нюансы. В случае ООО при его создании доли делятся между учредителями. Это хорошо работает когда все участники "в игре" и полны оптимизма в успешности бизнеса. Но может возникнуть ситуация, когда кто-то решит выйти. В этом случае у выходящего необходимо выкупить его долю. Стоимость последней определяется исходя из оценки стоимости вашего бизнеса. Проблема в том, что в этом случае вам необходимо извлечь из оборота сумму. Если доля велика то это может привести к разрушению бизнеса. В общем, работа с долями в виде акций всегда проще, чем с долями в уставном капитале ООО. К примеру, вы можете продать свою долю, не регистрируя изменения в ЕГРЮЛ, в то время как для ООО любое изменение в долях участников ведет к не самой приятной процедуре внесения изменений в учредительные документы.

Здесь и раскрывается основное преимущество ЗАО. Учредители обладают долями в виде акций. При выходе учредителя вы не обязаны их выкупать. И вообще, с акциями проще при купле-продажи. Таким образом, ЗАО более "устойчива" к изменению в составе учредителей: их выходу и вхождению. Но вместе с тем ЗАО накладывает дополнительные ограничения, которые могут не позволить выбрать эту форму для создания фирмы "с нуля". Во-первых ЗАО не может находится на УСН. Это серьезное ограничение для старта бизнеса. Кроме более весомых налогов добавляется сложность в ведении бухгалтерского учета по ОСНО. Во-вторых регистрация ЗАО несколько дороже и сложнее, чем ООО (см раздел о ценах). В-третьих, любое акционерное общество обязано ежегодно проходить аудиторскую проверку. А это процедура не из дешевых.

Как итог данного раздела могу дать следующие рекомендации. Если вы создаете бизнес один и этот бизнес не несет значительных рисков для клиентов - создавайте ИП. Если же вы создаете организацию и вкладываете в нее на старте значительные деньги, имеет смысл подумать о ЗАО, так как риски повышаются. В других случаях наиболее приемлемым вариантом является создание ООО с партнерами, которым вы доверяете.

Когда регистрировать


Момент регистрации юр.лица сугубо индивидуальный. Пожалуй, регистрировать нужно в следующих случаях:
  • с вами желает работать более-менее крупный клиент;
  • есть перспектива получения заказов, а также перспектива развития бизнеса;
  • вы собрали "банду" и хотите делать бизнес вместе, вкладывая свое время и деньги.
Вообще, можно просто зарегистрировать когда на то будет душевный позыв :). Однако, здесь есть риск того, что организация будет висеть без дела. А в течении этого периода вам придется сдавать нулевую отчетность раз в квартал. Это не сложно, однако время отнимает. Здесь можно пользоваться услугами консалтинговых фирм. На текущий момент сдача нулевки в Москве составляет порядка 3 тысяч рублей.

Как регистрировать


Есть два варианта - зарегистрировать самостоятельно, либо воспользоваться услугами "помощников". Первый вариант дешевле, однако заметно сложнее, если вы регистрируете в первый раз. Технически, регистрация самостоятельно не представляет сложностей. Однако постоянно меняющиеся нормы, множество мелких требований налоговой могут сбивать с толку. По этому я рекомендую второй вариант с привлечением специализированной организации. Конечно, придется выложить за услуги от 4 000 до 10 000 рублей. Но это того стоит, потому что кроме самой подготовки документов и помощи вам в налоговой, на первых порах они дают очень ценные советы. Фактически, вы платите за обучение. И это не так уж плохо.

Если вы решите использовать второй вариант, найти консалтинговую фирму не составит проблем. Подобных фирм сейчас очень много на рынке (даже слишком много). Просто наберите в поисковике "регистрация ООО" (либо ИП/ЗАО).

Независимо от того, будете ли вы регистрировать самостоятельно или нет, вам потребуется определится со следующими "параметрами" будущей организации (для ООО/ЗАО).

1) Размер уставного капитала.
Это та сумма, которой вы рискуете. Если вы сомневаетесь - ставьте минимальный (10 - 12 тысяч рублей).

2) Виды деятельности
Определяются общероссийским классификатором видов экономической деятельности (ОКВЭД). Если вы регистрируетесь с помощью консалтинговых фирм - просто скажите им чем вы планируете заниматься, и они подберут соответствующие коды ОКВЭД. Если же регистрируетесь сами - загляните на сайт www.mogem.ru.
Небольшая ремарка: ничего страшного, если в уставе будут прописаны "лишние" виды деятельности. Лучше сразу прописать с запасом, чем потом вносить изменения в учредительные документы.

3) Форма налогообложения
Если вы выбрали упрощенку (что скорее всего), то вам предстоит сделать выбор из двух вариантов: УСН 6% с доходов, либо УСН 15% с доходов минус расходы. Разница в том, что в первом варианте вы платите 6% с полученных за квартал доходов (т.е. 6% со всего, что пришло на ваш счет за квартал). Второй вариант предполагает, что из доходов вы вычитаете расходы и выплачиваете налогом 15% от этой суммы.
Что выбрать - вопрос отдельной статьи. Однако общие рекомендации следующие: если ваша деятельность не связана с закупкой сырья и материалов, и основные расходы - это зарплата сотрудников (типично для ИТ-фирм), то выбирайте УСН 6%. Однако УСН 15% дает большую свободу маневра, и при грамотном подходе сумму налога можно уменьшить. Если вы хотите играть в эти игры с оптимизацией - то это ваш вариант.

4) Юридический адрес
Пожалуй, самый больной вопрос для тех, кто создает все с нуля. При регистрации необходимо указывать юридический адрес вашей организации. Он же "по-хорошему" должен быть и фактический. Но аренда офиса очень дорогое удовольствие, особенно в столице нашей родины. И если у вас не получается снять "реальное" помещение, можно воспользоваться услугами специализированных фирм. Они за небольшое вознаграждение предоставят фиктивный адрес, который впишется в учредительные документы.
Может возникнуть вопрос "А что мне за это будет?". Обычно, ничего. В первые пару лет вы вообще никому не интересны при небольших оборотах. Если же ваши обороты повышаются, то почему бы не снять реальный офис, и там же "прописаться".
Кстати, фиктивный адрес удобен по началу и тем, что не привязывает вас к конкретному месту, и вы можете свободно переезжать не внося изменений в учредительные документы.
Примечание: Рассматриваемый выше вариант, конечно, не корректен с точки зрения законодательства и налоговой. Но жизнь есть жизнь. В конечном счете государство само заинтересовано в развитии малого предпринимательства. И коль скоро та помощь, о которой постоянного говорится в новостях пока больше на словах, чем на деле, нам, господа, приходится искать альтернативные варианты развития.

Стоит отметить один небольшой минус фиктивного адреса: некоторые банки не открывают счета, пока не проверят наличие реального офиса. Проверка обычно происходит следующим образом: по заявленному юридическому адресу высылается курьер с документами, попутно проверяя наличие там вас. Однако есть немало банков, которые относятся к регистрации весьма либерально. Если у вас адрес фиктивный - ищите либеральный банк, и вперед с документами.

Небольшая ремарка. Очень часто организации, оказывающие услуги по регистрации, предоставляют услугу "условного" юридического адреса. Если вы будете пользоваться такими услугами - узнайте, возможно ли организовать такой адрес для вас.


Сколько это стоит?


В зависимости от того, что вы создаете (ООО/ЗАО/ИП) цены будут немного отличаться. К примеру, для ООО вам потребуется:
  1. Госпошлина за регистрацию - 2000 руб
  2. Госпошлина за копию устава и учредительного - 800 руб (по 400 за каждую)
  3. Нотариально заверенные документы - около 1000 руб
И так, без привлечения регистрирующих организаций стоимость - около 4 000 рублей. Относительно не дорого, не так ли.
Привлечение консалтинговых организаций обойдется от 4000 до 10000 тыс. руб. Но это того стоит - экономит кучу нервов и времени.

Стоимость регистрации ЗАО отличается от регистрации ООО тем, что дополнительно уплачиваются государственные пошлины за регистрацию эмиссии ценных бумаг. Это плюс 10 000 руб. Также, стоимость услуг по регистрации в этом случае будет дороже - от 10 до 15 тыс руб.

С ИП все довольно просто. Потребуется:
  1. Госпошнина за регистрацию - 400 руб
  2. Нотариальные расходы (около 500-800 руб)
Услуги по регистрации обычно не превышают 5000 руб.

Заключение

Ну вот, вы теперь все знаете. Все что нужно для регистрации - решить вопросы подбора юридического адреса, выбрать схему налогообложения и подготовить документы для сдачи в налоговую. Сдача в налоговую происходит при личном присутствии генерального директора. Регистрация происходит в течении 10 рабочих дней. После этого вам выдается:
  • копии устава и протокола вашей организации;
  • свидетельство о регистрации (ОГРН);
  • свидетельство о постановке на налоговый учет (ИНН).
Собственно, с этого момента можно считать, что ваша организация зарегистрирована. Правда, для полноценной работы необходимо проделать еще ряд действий:
  • получить коды статистики Госкомстата;
  • получить выписку из ЕГРЮЛ;
  • сделать печать;
  • создать банковский счет.
Это довольно простые процедуры (пожалуй, кроме банковского счета, где порой возникают проблемы).
Резюмируя, хочу сказать что регистрация организации процедура не сложная, особенно при посредничестве сторонних организаций. Самостоятельно регистрировать в первый раз не рекомендую, так как уж очень много нюансов. Однако кого бы вы не привлекали, в конечном счете вам все равно придется постепенно во все вникать, и это не так уж плохо. Как говорится, scientia potentia est (лат. знание - сила).

среда, 30 января 2008 г.

О linux tips'n'trics

Очень часто работая в linux необходимо сделать простые операции, тем не менее требующие нетривиальных действий. Что делать, идешь в гугл, смотришь рецепт. Но через некоторое время рецепт забывается, и приходится терять время на поиск заново. В таких случаях я стараюсь выписывать эти trics'ы в определенное место, чтобы потом вспомнить что и как делать. Так вот и накопился наборчик полезных приемов, чем я и собираюсь поделится с общественностью.


Как снять флаг executable только для файлов в каталоге


Часто при совместном использовании windows возникает ситуация, когда на скопированных из fat-разделов файлах стоят executable флаги. Chmod -rx здесь не поможет, так как уберет разрешение на вход в каталоги. Но поможет вот эта команда:
find . -type f -exec chmod -x {} \;
Эта команда снимет флажки x со всех файлов в текущем каталоге, но оставит в неприкосновенности каталоги, линки, пайпы и т.п. Вариация данной команды также может быть использована для следующей задачи.


Поиск файлов по содержимому


Используя тот же принцип, мы можем искать файлы не только по имени и типу, но и по содержимому. Пример:
find ~ -exec egrep -i "password" /dev/null {} \;
Данная команда найдет все файлы в домашнем каталоге, содержащие слово "password". Естественно, вместо этого слова можно вписать любое регулярное выражение.


Echo и sudo


Довольно долго мучался по поводу следующей проблемы. Часто требуется выполнить команду такого рода:
sudo echo "hello world" >> /path/to/file
Т.е. от имени суперпользователя записать что-либо в файл иначе недоступный для записи. На это shell ругнется, сказав о нехватке прав. Это связанно с процессом выполнения данной команды: файл /path/to/file открывается от имени обычного пользователя, тогда как первая часть команды выполняется от рута. При перенаправлении stdout в открытый файл и возникает ошибка.

Ситуацию можно исправить следующим образом:
sudo sh -c 'echo "Hello world" >> /path/to/file'
Однако, есть и более элегантный способ. Для этого понадобится команда tee, читающая stdin и пишушяя в stdout или файл:
echo "hello world" | sudo tee -a /path/to/file
Если необходимо перенаправление вида ">" вместо ">>", флажок "-a" не используем:
echo "hello world" | sudo tee /path/to/file
Лично мне эта конструкция экономит много полезных секунд :).


Создание и монтирование образа iso


Очень часто возникает необходимость смонтировать образ. Это делается довольно просто:
mount -o loop -t iso9660 filename.iso /mnt/iso
Команда монтирует образ filename.iso в директорию /mnt/iso. Однако, здесь есть оговорка: чтобы выполнить эту команду нужно быть рутом, а также должно быть настроено loopback устройство.

Создать образ с имеющегося диска также несложно:
dd if=/dev/cdrom of=file.iso
При необходимости создать образ из исходных файлов, можно воспользоваться утилитой mkisofs (пакет в gentoo - app-cdr/cdrtools):
mkisofs ~/file.iso /tmp/directory
где file.iso - создаваемый образ, /tmp/directory - каталог с исходными файлами.


Копирование, локальное и не только

Кроме использования стандартной команды "cp" существует оригинальный способ копирования через пайпы (pipes):
cd /
tar -cf - | tar -C -xf -
Команда скопирует каталог в каталог . Этот способ очень полезен при копировании больших объемов данных. При необходимости можно добавить и архивацию ключиком "-z" или "-j":
tar -czf -  | tar -C  -xzf -
Этот рецепт можно немного дополнить. При необходимости передачи файлов по сети из локальной машины на удаленную можно использовать следующую конструкцию:
cd /
tar czf - | ssh tar xzf - -C
В результате получился некий аналог scp.


X Forwarding


Полезная и простая фича. Если нужно запустить на удаленной машине что-то, требующее X'ы, добавляем к стандартной команде ssh пару ключиков:
ssh -X -Y 
и спокойно запускаем графические приложения на удаленной машине remote_box.


Генерация паролей


И на десерт еще одна простая утилита. Если вы устали придумывать пароли, воспользуйтесь pwgen (app-admin/pwgen в портах gentoo).

Результатом будет нечто подобное:
Er5quaib huDoo3yo AhKie0oZ AeV2Retu Loh9Ahku AhRoh3ae Ooph6eeS pum2Aoch
Bohzei6u aeDe6ahk JieH4eiG aej8Iegh Ais5docu chahR4ku eigo2Gai xutaa3Vo
...
Осталась самая малость - запомнить выбранный пароль :).

Удачи!