• Как понять регулярные выражения?

    Bambr
    @Bambr
    Плюсую Фриддла. Даже тем, кто уже с регулярками уже познакомился, эта книга может очень хорошо перестроить мозги.
    Ответ написан
    Комментировать
  • Проблема с климатом в офисе?

    Bambr
    @Bambr
    Тут уже были мысли про пленку отражающую. Поддержу. У меня дома здоровенный застекленный балкон на южной стороне. Летом там творится ад. Заподло в том, что все окна в квартире выходят именно туда. Так вот, в прошлом году наклеил на стекла пленку зеркальную, из ближайшего подземного перехода, вот такую forum.detochka.ru/journal/uploads/4194/j4194_1278962008th.jpg. Где у нее правильная сторона, правда, толком не понял, но реально помогло. Конечно, прохладно от нее не стало но разница в нагреве заклеенного и незаклеенного стекол — действительно ощущалась. Заподло — при отклеивании половина зеркального слоя осталась на стекле, видимо наклеил таки неправильной стороной. Гугл подсказал, что полученный отстой люди научились оттирать шуманитом, и это действительно помогает, хотя и не так просто как хотелось бы.
    Отец у меня оказался умнее. Он натянул подобную пленку на легкую деревянную рамку и тупо поставил этот экран на подоконник.
    Ответ написан
    Комментировать
  • Существует ли нормальное антиспам-смс приложение под Android?

    Bambr
    @Bambr
    Пару месяцев назад поставил себе Spam Agent (перед этим пробовал парочку каких-то других софтин, но этот прижился). Пока доволен, хотя режим нотификации о спаме не отключаю на всякий случай. У меня совсем массовых рассылок не приходит, правда, так что не знаю, насколько он хорош в режиме жесткого спама. Кажется читал (или сам придумал, уже хрен вспомнишь) что там внутри байес. По крайней мере, у него есть папки для хороших и плохих смс. Если смс заведомо плохая, просто в трее появляется иконка, по которой можно посмотреть что же там пришло (вроде отключаемая фича). Если сомнительная — спрашивает. Когда в тексте есть телефон или урл — во всех новых случаях начинает сомневаться. В связях с коллективным разумом я эту хрень не заметил.
    Ответ написан
    Комментировать
  • Как вы осуществляете commit в git?

    Bambr
    @Bambr
    Пользуемся вторым способом. Если коммитер добросовестный и делал цельные коммиты в своей ветке — работать легко и приятно. Есть и такие, которые сделают один значимый коммит, а потом еще десяток сверху с комментарием fix (где может быть что угодно — от концептуальной доделки до пропущенной точки с запятой). Задавался в свое время аналогичными вопросами «как сделать красивую историю», то к чему пришли сейчас — устраивает совершенно. Чтобы удобнее было расползаться по древу гита, номер таска ставится не только в имя бранча, но и в начало каждого коммит мессаджа. Это реально упрощает жизнь при разборе полетов (и при анализе графа, и при git blame). Чтобы это работало, есть пара хуков — запретительный на пуш и вспомогательный, который подставляет номер таска в редактируемый коммит мессадж.
    Ответ написан
    Комментировать
  • А как вы боретесь с тем, что программисты не проверяют результат?

    Bambr
    @Bambr
    Ввели кодревью, резко уменьшилось количество кривых «фиксов», которые не проверялись автором на работоспособность вообще. Но это, конечно, не серебряная пуля.
    Ответ написан
    1 комментарий
  • Perl`овщики помогите со скриптом

    Bambr
    @Bambr
    Скажите, а на кой черт вам перл, если Вы на нем пишете как на баше?

    $Date = `date +%d-%m-%Y-%H.%M`;
    use POSIX 'strftime';
    $Date = strftime('%d-%m-%Y-%H.%M', localtime);

    $log = «Backup.'$DBname'.'$Date'.txt»;
    Можно воспользоваться советом выше про chomp, это правильнее. А можно выкосить все переводы строк уже из собранной переменной $log, в данном случае это чуть короче:
    $log =~ s/[\r\n]//g;

    system «echo '$log' > temp.log»;
    open my $fd, ">", «temp.log» or die «Can't open temp.log: $!»;
    print $fd $log;
    close $fd;

    Да, это явно длиннее, но и намного эффективнее. Форкать процесс чтобы узнать дату или записать строчку в файл, это как-то совсем грустно…
    Ответ написан
    Комментировать
  • Конденсаторы в БП?

    Bambr
    @Bambr
    Напряжение написанное на конденсаторе показывает по сути его запас прочности. Подадите более высокое — его пробьет. Вы просто увеличили «запас прочности» конденсаторам, и ничего более. Если погуглите на тему блоков питания — ставить конденсаторы с запасом по напряжению рекомендуют практически все, единственное ограничение здесь — запас лучше делать разумным, т.к. конденсаторы бОльшего вольтажа, как правило, крупнее и дороже.
    По поводу увеличения емкости — совет верен в отношении фильтров блоков питания, но не в остальных случаях (скажем, если вы значительно измените емкость конденсатора в кроссовере колонок, вы измените частоты среза и вероятно подпортите звук). В традиционных трансформаторных блоках питания (с импульсными не знаком) конденсатор гасит пульсации, там с увеличением емкости увеличивается и подавление пульсаций, но при этом на старте значительно возрастает ток первичной зарядки конденсатора.
    Ответ написан
    1 комментарий
  • Интернет-магазин и ООП?

    Bambr
    @Bambr
    Был у нас когда-то магазин, перл+ООП, так что все написанное ниже — субъективный опыт и описание конкретной реализации, а не строгая догма.
    Во-первых, все очень хорошо и с пользой разбивается на объекты. Часть объектов мысленно «можно потрогать» — к ним можно отнести объекты юзера, товара, объект корзины с подъобъектами-позициями (товар + колво), объект заказа с позициями (товар+колво+зафиксированные цены) и много всякой другой мути. Часть объектов «потрогать» уже сложнее, но их введение тоже дает профит благодаря полиморфизму и наследованию — в этой категории, например, у нас оказались объекты, отвечающие за реализацию различных способов доставки и оплаты. Как обычно, наиболее интересным и не слишком простым оказалось все это увязать в единую систему. Многие объекты в обе стороны зависят друг от друга, но тем не менее избежать циклических связей удалось.
    Что вам могут дать объекты? Самый наглядный пример — это, конечно, товар. Предположим, у нас есть две таблицы — с книгами и дисками — и классы ActiveRecord, прикрученные к ним. Начинаем определять, что же нам нужно от товара. По большому счету, это цена (с валютой, если есть необходимость) и название. Остальное менее интересно и может пригодиться в частных случаях. Например, для расчета стоимости почтовой доставки пригодится информация о весе, а для всяких маркетинговых штучек — поле «цена со скидкой» (для красоты чисел удобнее не задавать это поле в процентах). Определяем методы, которые будут эту информацию возвращать. Допустим, захотелось сделать комплекты из нескольких товаров. Заводим новый класс, для которого можно будет определить свое название и цену со скидкой, цена без скидки суммируется по входящим в комплект продуктам. Ну и так далее, на странице товара его можно отображать как угодно и полей может быть сколько угодно, «корзинка» же видит свой набор полей, и только его. По большому счету, если у нас уже есть система, умеющая книги, прикрутить к ней комплекты — цена написания одного небольшого класса с парой обязательных полей.
    Доставка также обладает названием, стоимостью, произвольным образом зависит от содержимого корзины, адреса доставки, может быть валидной или невалидной в данных условиях (как правило, курьерская доставка в Петропавловск-Камчатский невозможна). Аналогично и с оплатой, но она зависит также и от доставки (нельзя оплатить курьера наложенным платежом).
    Корзина включает в себя информацию о товарах, юзере, доставке и оплате. Заказ — до боли похож на корзину, но вся информация, которая может измениться, в нем сохраняется отдельно. Измениться могут например цены, адреса.
    Если приступить к реализации, начните с простого — с товаров и корзинки. Подумайте, что такое корзина, что в нее входит кроме товаров, сколько корзин может быть у юзера, возможна ли «анонимная» корзина. Первые два вопроса позволят вам решить, какие поля и методы должны быть у объекта, вторые два — как получить конкретный объект корзины, когда захочется показать ее на странице. Реализуйте то, что получилось, пока без доставок и оплат, но чтобы на экране выглядело «как у всех». Добавляйте постепенно остальное, ищите места, где можно сделать несколько разных реализаций чего-либо при одинаковом интерфейсе — возможно, это можно будет выделить в отдельный объект. Но без необходимости тоже не крошите, будет сложно собрать в одно целое :)

    Как-то так. Успехов!
    Ответ написан
  • Странности с новым блоком питания, что делать?

    Bambr
    @Bambr Автор вопроса
    Спасибо всем за помощь, правильно отвечу сам себе :) Помог гугл и поиск по форумам асуса. Дело в том, что вместе с БП я установил в систему плату FireWire. Плата уже не новая, и ранее с ней подобных вопросов не возникало — впрочем, под Win7 я ее тоже не пробовал использовать, на предыдущей материнке был встроенный контроллер. Короче, если 7ка не выставляет по умолчанию галочку «разрешить отключение этого устройства для экономии энергии» в закладке «Управление питанием» в свойствах устройства в диспетчере задач. Выставил галочку — все заработало, даже при выключенном ACPI в биосе. Вот такая фигня.
    Ответ написан
    Комментировать
  • Как Вы осуществляете "deploy" на "production"?

    Bambr
    @Bambr
    Если интересует именно финал — из релизного среза git собирается набор rpm, тестируется, разъезжается по серверам.
    Ответ написан
    Комментировать
  • Умляуты в MySQL

    Bambr
    @Bambr
    mysql-front.software.informer.com/5.0/ вот здесь пишут что у MySQLFront проблемы с utf-8…
    ЗЫ на всякий случай еще убедитесь, что SHOW CREATE TABLE показывает, что таблица и ее поля используют utf-8. character_set_database это всего лишь дефолтный чарсет для данной базы, не более.
    Ответ написан
  • Advanced настройки Wi Fi роутера. Вопрос к беспроводным спецам

    Bambr
    @Bambr
    Меня самого интересуют те же самые вопросы, но применять ответы я собираюсь к RT-N16 + прошивка энтузиастов. У меня, кроме кривых рук, на скорость и стабильность (!) влияют добрые соседи, равномерно размазанные по эфиру, и не оставившие ни одного свободного канала. Выяснил я это при помощи софтины inssider. Вы не пробовали сканировать эфир, может быть Вам стоит в первую очередь выбрать другой канал? Или эта проблема уже решена?
    Ответ написан
  • Как можно повысить мозговую активность?

    Bambr
    @Bambr
    Умные люди советуют не перегружать мозг сверх меры и давать ему разнообразную писчу. Слышал советы вплоть до того, чтобы иногда есть левой рукой — т.к. за левую половину тела отвечает другое полушарие мозга, таким образом можно немного перебалансировать нагрузку :)

    По поводу химии. Я периодически (стараюсь не чаще курса в год) принимаю глиатилин, либо мексидол — когда уже сил нет терпеть. Принимать имеет смысл не единичные дозы, а держать рекомендованный курс. По моим личным оценкам мексидол дает более заметный эффект, но судя по всему тут индивидуально. Советовать всем делать как я не буду — мозг прибор сложный, и без консультации с медиками я бы делать такие эксперименты не стал, тем более по отзывам в интернете. У меня медики в семье есть, мне проще :)
    Ответ написан
    Комментировать
  • Что должен знать и делать ведущий разработчик?

    Bambr
    @Bambr
    Вообще все сильно зависит от компании. Как уже на днях писали, то что человек работал тимлидом в мелкой конторе, не обязательно дает ему достаточные навыки, чтобы претендовать на более простую должность ведущего разработчика в каком-нибудь майкрософте — требования могут быть совершенно разные. Вообще про тимлидов выше уже много написали. Предположим, что у нас иерархия длиннее — не «тимлид -> программер», а например «тимлид -> ведущий программер -> программер -> стажер».
    1) С тимлидом все более менее понятно, этот человек в идеале должен обладать навыками менеджера, архитектора, быть техническим экспертом в своей области и авторитетным членом команды. При этом не должен забывать, что он — часть команды, а не главный чувак с подаванами. Этот человек принимает много решений (как самостоятельно, так и принимая мнения/идеи других людей), несет ответственность за команду перед руководством и ответственность перед командой за все происходящее.
    2) ведущий — как правило опытный разработчик. Должен уметь самостоятельно принимать решение о способе реализации задачи и думать о последствиях выбора того или иного решения. Четко знает, чем хороший код отличается от плохого, умеет оценивать скорость выполнения кода и потребляемые им ресурсы (типа «этот код вчетверо быстрее вон того, но жрет вдвое больше памяти и увеличивает нагрузку на базу»)
    3) программист/кодер — человек, способный самостоятельно закодировать четко описанную задачу (написать функцию с таким-то интерфейсом, которая будет решать такую-то задачу, и прикрутить ее вон туда). Если задача описана недостаточно конкрентно — есть шанс получить херовое решение. С другой стороны, неконкретности в постановке задачи — один из способов заставить кодера думать.
    4) стажер — человек, которому для решения даже достаточно четко очерченной несложной задачи потребуется внимание и советы старших. Тут важно отличать идиота и человека без опыта, внимание будет требоваться обоим, но «правильным» стажером является именно второй вариант :)
    Ответ написан
    2 комментария
  • Где брать задания для совершенствования навыков и получения опыта?

    Bambr
    @Bambr
    А чем конкретно Вы хотите заниматься в перспективе? Веб в общем и целом, или ближе к бэк-енду, или наоборот — поближе к фронт-енду?
    1) Если выбор — фронт, то конечно же имеет смысл придумать «какой-нибудь веб-сайт» и сделать его.
    2) Для бэк-енда — пробуйте мыслить сервисами, решайте абстрактные задачи типа «написать сервис который будет складывать входящие запросы (урлы) в очередь + скрипт-разгребальщик этой очереди, забирающий страницы с серверов и делающий какую-то их обработку, результат складывать в бд». Тут с одной стороны проще (задачи как правило четче), с другой — важна производительность, возможно, возникнет желание сделать сначала параллельный разбор очереди, потом заюзать асинхронный ввод-вывод через какой-нибудь libev… У меня например есть задача до которой не доходят руки — запустить на медиацентре сайт-надстройку над поисковым сайтом локальной сети провайдера, чтобы там около найденных результатов была кнопка «скачать к себе», дать себе доступ к этой системе из интернета, и сделать очередь из заявок на скачивание. Уверен, вы тоже можете придумать подобную полезную в быту задачу.
    3.1) Если хочется всего понемногу — хорошим способом осознать теорию будет велосипедостроение. Напишите простейшую CMS для управления вебсайтом, имеющим древовидную структуру. Полностью сами, используя как можно меньше сторонних модулей и фреймворков (это не поможет Вам научиться работать с теми библиотеками, которые востребованы на рынке, но даст внутреннее понимание их работы). Попробуйте ее разогнать, оптимизировать, улучшить. На выходе получится свой небольшой фреймворк и система, вполне пригодная для клепания сайтов-визиток. Самое главное что получится — понимание внутреннего устройства систем, которые делают то же самое, что и Ваша. Пробуйте их сравнить, радуйтесь там, где будет лучше Ваша, и допиливайте ее там, где она будет отставать. Не стесняйтесь изучать чужой код и не задавайте на форумах вопросов про то, «как это работает», пока не будете уверены в том, что сами уже не сможете разобраться.
    3.2) альтернативный вариант для «всего понемногу» — строить велосипед не с нуля, вытачивая руками гайки, а из готовых узлов (библиотеки, фреймворки). Этот путь быстрее поднимет Вам цену на рынке и будет более полезен в краткосрочной перспективе, но даст ли он такое же глубокое понимание как в пункте 3.1 — не уверен. Я в свое время шел другим путем :)
    Ответ написан
    Комментировать
  • Можно ли отправить магнит по почте?

    Bambr
    @Bambr
    мне несколько лет назад не дошло даже письмо с небольшой пачкой фотографий, до 5 мм толщиной. Думаю, бандероль будет надежнее.
    Ответ написан
  • Указываете ли вы в своем резюме ссылки на свои профили на тематических сайтах (хабр, stackoverflow.com и т.д.)?

    Bambr
    @Bambr
    Указываю ссылку непосредственно на свои хабрастатьи, там почти всё по специальности.
    Ответ написан
    Комментировать
  • Выбор операционки для нетбука?

    Bambr
    @Bambr
    У меня lenovo S10-3t, адаптер тот же что и у вас. Сижу под Ubuntu 10.10, вайфай работает «из коробки» как часы. Ничего для этого дополнительно настраивать не требовалось. Если поможет, могу параметры какие-нить подмотреть в своей системе и скинуть сюда
    Ответ написан
  • Подскажите простую систему для учёта почасовой работы в веб-студии

    Bambr
    @Bambr
    Посмотрите на redmine. Не могу сказать, идут эти фичи сразу или нужно ставить какое-либо дополнение, я работал с уже настроенной системой как пользователь. Там была возможность и вбивать часы к задачам, и делать выборки типа «что делал Вася Пупкин с 1 по 10 января» (а Вася мог настроить отображение своего потраченного времени за неделю). Насчет экспорта в эксель не уверен правда.
    Ответ написан
  • Почему GParted не видит разделы диска?

    Bambr
    @Bambr
    В свое время повредил таблицу разделов Disk Director'ом (не помню уже что там было, помню что сам виноват был). В результате винда видела диски, диск директор на них удивлялся. Вражий Partition Magic нашел некую багу и полечил ее, но не смог выполнить нужные мне операции с разделами. Зато после его вмешательства Disk Director все смог доделать :) В общем я к чему клоню — если самое надежное решение (забекапиться и переразбить диск с нуля) не нравится, попробуйте использовать весь софт, который имеет отношение к проблеме. Велика вероятность, что одна из программ сумеет найти нечто, мешающее другим работать.
    Ответ написан
    Комментировать