• Sanyo Eneloop PRO и Sanyo ENELOOP PLUS

      Не успел мир оценить по достоинству новые аккумуляторы Eneloop XX, как компания Sanyo подготовила ещё несколько сюрпризов в этом году… встречайте новинки — аккумуляторы с низким саморазрядом типоразмера AA - Sanyo Eneloop PRO и Sanyo Eneloop PLUS

      image

      Читать дальше →
    • Немного про Bash и смежные науки. Часть 1

        Если вы активно используете Linux для администраторских задач, то наверняка заглядываете время от времени в консоль (или живёте в ней). Несмотря на активное вытеснение текстового интерфейса графическим, а тыкать галочки и нажимать на кнопочки всё-таки интуитивнее, что породило целое поколение эникейщиков, консоль была, есть и будет эффективным средством общения с компьютером. Данная статья рассчитана на тех, кто уже как бы знаком с Bash (Bourne-again Shell), самой популярной реализацией командной оболочки. Этот терминал уже много лет используется по умолчанию чуть ли не в каждом дистрибутиве Linux, так что новички даже не догадываются, что бывают и другие оболочки. Bash пронизан мудростью наших UNIX-предков и всячески рекомендуется для освоения. Сейчас вы увидите, что консоль бывает полезна не только для команд вида «sudo /etc/rc.d/network restart» :)
        Да ну?
      • Почтовая кухня #1: DNS

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

          Часть 1 - DNS.
        • JS tips

            Алгоритм получение результата А && B

            Если операнд A истинный (true, «string», someObj), результатом является B, иначе — А.
            То бишь код:

            if (a) {
            return a.member;
            } else {
            return a;
            }


            Может быть заменен на более компактный:

            return a && a.member;

            Алгоритм получение результата А || B

            Если операнд A истинный, результатом является A, иначе — B.
            Эта особенность может быть использована для присвоения дефолтных значений переменным:
            last = input || default_value;

            Создание объекта на лету

            obj = {fieldName: "a"}; — объект с полем fieldName
          • Логика английских времен

              Изучавшие или изучающие английский язык знают, каким страшным может казаться множество английских временных форм глаголов.
              Всего в английском 12 временных форм. А в русском-то, на первый взгляд, всего 3, и как их связать с английскими, для новичка может быть совершенно не понятно.
              Читать дальше →
            • Эти замечательные VPN или о чём нужно помнить пользователям shared-ресурсов.

                Вводная информация:
                Провайдером мне предоставлен «доступ к сети с использованием технологии ADSL». Я являюсь пользователем Fedora Core 6. Эта операционная система постепенно выживает winXP с моего компьютера, не исключено, что скоро на большем из двух дисков тоже поселится какой-нибудь дистрибутив GNU Linux.

                «Доступ к сети...» хорошо звучит, верно? И он на самом деле есть – внутри виртуальной частной сети провайдера можно поднять, к примеру, http-, irc- (что я и сделал) сервера. Можно и другие, но это менее актуально (трафик внутри сети тарифицируется, значит ftp отпадает, а что такое jabber мало кто из «подключенцев» слышал). Конечно динамический ip вносит некоторую долю неудобства, но в своем чате как-то приятней общаться.
                Но речь пойдёт не об этом. Решил я как-то забить в адресную строку Konqueror`а что-то вроде smb://192.168.240.* (local ip address по версии pptpconfig или inet addr по версии ifconfig, по сути – динамические ip-адреса в виртуальной частной сети). С четвёртой попытки я получил возможность лицезреть shared-ресурсы другого компьютера. «Расшарены» они были, судя по всему, из расчёта, что их будут видеть пользователи локальной сети одного квартала. Увы, скорость соединения и тот факт, что трафик внутри сети тарифицируется (выяснил опытным путём – скачав какой-то mp3-файлик) не позволяли набить свой винт шедеврами советского кинематографа. Как же найти другие ресурсы? Ручной перебор – это долго и малоэффективно… Поскольку подключался я по протоколу Samba, значит в эту сторону и надо копать… ...man samba и почти сразу же натыкаемся на утилиту nmblookup. nmblookup -A позволяет просканировать машину с указанным ip на предмет shared-ресурсов (и ресурсов samba тоже). Если ввести несколько ip через пробел, то nbmlookup проверит их все. Поскольку я так и не разобрался как задать маску, то пришлось написать небольшой скриптик, выводящий интересующий меня диапазон адресов:
                #!/bin/bash
                for i in `seq 0 255`;
                do
                nmblookup -A 192.168.240.$i
                done
                Должен заметить, что на скорости 128kB/s сканирование 256-и ip занимает несколько минут. Первый поиск дал примерно полтора десятка машин. В их число попали несколько серверов с фильмами/музыкой/варезом для локальных сетей, и несколько компьютеров предприятий. На следующий день «попался» компьютер предприятия, на котором админил мой друг. Дело в том, что из-за проблем с программой типа банк-клиент, 2 машины его сети не были прикрыты прокси и были напрямую подключены к adsl-роутеру. Поскольку права сотрудников не были должным образом ограничены, то они пооткрывали диски друг для друга. Рабочие документы, базы данных, переписка, фотографии – всё открыто.
                Читать дальше →
              • Да, но кто сказал, что они купят это?

                • Перевод
                Продолжение перевода серии статей «5 уроков просмотра стартапов»,
                прошлая статья Настоящие нечестные конкурентные преимущества


                На сотнях стартап питчей в Capital Factory, не нашелся и десяток людей, которые были бы готовы сказать «если вы создадите этот продукт, я дам вам X долларов».



                Задумайся над этим: сотни людей готовы уволиться с постоянной работы, потратить свои сбережения, рискнуть личной репутацией, трудиться 70 часов в неделю, пережить такой же стресс, как и рождение ребенка (поверьте мне, я испытал рождение и ребенка, и стартапов)… и все это при том, что нет жалкого десятка людей, действительно готовых заплатить за то, что предлагают стартаперы.

                Недальновидно, не правда ли?
                Читать дальше →
              • 11 важных вещей, которые нужно знать про DevOps — часть первая

                • Перевод

                От переводчика


                В 2009 года за рубежом возникло движение, которое назвало себя DevOps. На первый взгляд это разработчики с навыками сисадминов и сисадмины с навыками разработчиков. Но на самом деле это отнюдь не так. Данное подход имеет четкие цели, философию, инструменты и методы, которые только некоторые русскоязычные компании начинают использовать. Мне кажется, что данный подход у нас незаслуженно игнорируется и мне хотелось бы рассказать об 11 вещах, которые нужно знать о DevOps, в частности:
                • что такое DevOps
                • каковы его ценности
                • как он внедряется
                • кому он приносит пользу

                Надеюсь, этот текст вам понравится.

                Читать дальше →
              • Яндекс.Диск как файловая система


                  Недавно Яндекс анонсировал свой новый сервис, подобный DropBox'у. Многие его сразу же начали поливать из ведра, хотя, я думаю, зря.

                  Один из плюсов лично для меня, линуксоида — не нужно устанавливать дополнительные приложения, как в случае с DropBox'ом. Сервис можно подключить через файловый менеджер Nautilus, используя WebDAV. Что я, собственно, сразу же и сделал.

                  Однако, я не стал на этом ограничиваться, ведь гуёвый доступ — не совсем хорошо, консольки никто не отменял.

                  Подключим Яндекс.Диск как файловую систему
                • Time Machine: бекапим OS X Lion на Ubuntu 12.04 LTS сервер




                  Если кто не знает, Time Machine — это такой замечательный бэкап-сервис из коробки для Apple OS X, тут и тут можно почитать поподробнее. Если у вас есть мак, и вы не пользуетесь «машиной времени», то это совершенно напрасно. Time Machine делает постоянные дифференциальные бэкапы, поэтому она удобна даже в случае прекрасной жизни ваших HDD / SSD. Можно в любой момент открутить назад историю и восстановить случайно удаленный файл, или, что еще важнее, предыдущую версию измененного файла.

                  Предполагается, что пользователи будут использовать либо обычный жесткий диск, либо специальный сетевой девайс Time Capsule. Традиционный внешний жесткий диск — решение для очень организованных людей, которые регулярно (хотя бы ежедневно) будут его подключать для автоматического бэкапа, иначе польза от тайм машины будет весьма ограничена (хотя прошлогодний бэкап все же лучше, чем совсем ничего). С тайм-капсулой будет гораздо удобнее и надежнее. Кроме функции бэкапа, она может выполнять еще и функцию сетевой шары, раздачи Wi-Fi (фактически Time Capsule — это Wi-Fi роутер с HDD). Но устройство стоит денег, и оно не такое универсальное. Мне захотелось прикрутить на свой сервер работающий на Ubuntu возможность делать бэкапы тайм-машиной. И это не так сложно, о чем и будет эта заметка.

                  Читать дальше →
                • Внутренности jQuery. Поиск кода, выполняемого по событию

                    Чем дальше в лес, тем толще партизаны. Нет, не так. Чем старше веб, тем больше джаваскрипта

                    Клиентского кода в веб-приложениях с каждым годом действительно становится все больше. Подчас это десятки файлов с сотнями функций. И что делать, когда нам нужно поменять код, выполняемый по событию (например, клик по ссылке). Как его найти? Задавшись решением этой задачи, я придумал несколько разных вариантов. Каждый из них имеет свои плюсы и минусы. И в конце статьи я предлагаю метод, который мне кажется оптимальным.
                    Читать дальше →
                  • Простой и эффективный метод отразить http DDoS от 50мбит с помощью nginx и iptables

                      Здравствуй, Хабр!
                      Предлагаю твоему вниманию простой и в то же время эффективный метод борьбы с http DDoS. На основе сервера Xeon 2.5GHz / 4Gb RAM / SAS можно отражать атаку примерно до 300 Мбит/с (значение получено методом экстраполяции).

                      Способ реализация

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

                      Область применения

                      Борьба с Http DDoS на выделенном сервере или ВПС. Максимальная возможная мощность сдерживания DDoS атаки ограничивается физическими возможностями сервера и пропускной способностью канала.

                      SEO под DDoS-ом

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

                      Стоимость и эффективность

                      На время атаки придется отказаться от некоторых сервисов вашего сайта. Возможно, придется расширить полосу канала, перенести сайт на более мощный сервер. Эффективность достигается максимизацией коэффициента масштабируемости системы. Обеспечивается быстрое наращивание аппаратных ресурсов при увеличении мощности атаки.
                      Читать дальше →
                    • 17 простых советов для повышения продуктивности

                        Эти советы — не очередная компиляция из книг и блогов, посвященных продуктивности. Каждый совет основан на моём личном опыте. На каждый совет я мог бы дать гарантию, если бы гарантия на советы была возможна в принципе.

                        Вступление окончено, переходим к советам!
                        Читать дальше →
                      • Rails custom Scaffolding


                          Наверное каждый в начале работы с ROR был впечатлен возможностью Scaffolding'а, который позволяет одной командой создавать migrations, controllers, models и views.

                          Но что делать если в своем проекте вы используете не стандартные Rails утилиты: erb, Test::Unit, fixturies, а сторонние инструменты: Haml, Rspec, Cucumber, Factory Girl и более того, хотите добавить собственные шаблоны?

                          Интересно? GOTO next line.

                          Исходные данные:
                          Ruby on Rails; Rspec; will-paginate; Haml; Factory-girl

                          Задача:
                          % rails generate scaffold post post:string
                          Генерирует:
                          1. contoller's с поддержкой will_paginate, русскоязычными сообщениями
                          2. model's с поддержкой will_paginate
                          3. view's с заданным нами содержимым и в формате haml
                          4. Rspec тесты, вместо Test::Unit
                          5. Factory Girl factories вместо стандартных fixtures

                          Читать дальше →
                        • Использование Deferred объектов в jQuery 1.5

                          • Перевод
                          Deferred объекты появились в jQuery 1.5. Они позволяют отделить логику, которая зависит от результатов выполнения действия от самого действия. Для JavaScript Deferred объекты не новы, они уже были в MochiKit и Dojo, но с изменениями логики jQuery ajax от Julian Aubourg, внедрение Deferred объектов было неминуемо. С Deferred объектами несколько callback могут быть связаны с результатом задачи и любые из них могут быть привязаны к действию даже после начала его выполнения. Выполняемая задача может быть асинхронна, но не обязательно.

                          Deferred объекты теперь встроены в $.ajax() таким образом вы будете получать их автоматически. Обработчики теперь могут быть связаны с результатом следующим образом:
                          // $.get, ajax запрос, он асинхронный по умолчанию
                          var req = $.get('foo.htm')
                             .success(function( response ){
                                // что-нибудь делаем с ответом
                             })
                             .error(function(){
                                // делаем что-нибудь если запрос провалился
                             });
                           
                          // это выполнится перед тем как $.get() будет выполнено
                          doSomethingAwesome();
                           
                          // Делаем что-то ещё перед завершением запроса
                          req.success(function( response ){
                             // делаем  что-то ещё с ответом
                             // он будет выполнен когда запрос завершится, а если запрос завершен, то будет вызван немедленно
                             // если запрос уже был выполнен
                          });

                          Читать дальше →
                        • Правильный захват контекста в Javascript

                            Довольно часто во многих статьях я вижу, как люди захватывают контекст this для использования в анонимной функции и удивляюсь — то, что уже стало стандартом — просто ужасная практика, которая противоречит всем канонам программирования. Вам знакома такая запись?
                            var self this;
                            Может вам тоже стоит переосмыслить этот аспект?
                            Читать дальше →
                          • Ruby on Rails 3 — Заметки к финальному релизу

                            • Перевод

                            Оглавление

                            1. Переход на Rails 3.0
                              • Rails 3 требует Ruby 1.8.7+
                              • Объект Application в Rails
                              • script/* заменен на script/rails
                              • Зависимости и config.gem
                              • Процесс перехода
                            2. Создание приложения на Rails 3.0
                              • Включение гемов
                              • Жизнь на грани
                            3. Архитектурные изменения
                              • Перезарядка Railties
                              • Все компоненты ядра Rails теперь независимы
                              • Абстракция Active Model
                              • Абстракция контроллеров
                              • Интеграция Arel
                              • Извлечение Mail
                            4. Документация
                            5. Интернационализация
                            6. Railties
                            7. Action Pack
                              • Абстрактный контроллер
                              • Action Controller
                              • Action Dispatch
                              • Action View
                            8. Active Model
                              • Абстракция ORM и интерфейс c Action Pack
                              • Валидации
                            9. Active Record
                              • Интерфейс запросов
                              • Усовершенствования
                              • Патчи и устаревшие методы
                            10. Active Resourсe
                            11. Active Support
                            12. Action Mailers
                            13. О создателях
                            Читать дальше →
                          • Многопоточность в Ruby

                            • Перевод
                            Перевод главы «Multithreading» книги David Thomas и Andrew Hunt «Programming Ruby: The Pragmatic Programmers' Guide, Second Edition».

                            Часто самым простым способом выполнить одновременно две вещи является использование потоков в Ruby. Они являются внутрипроцессными, встроенными в интерпретатор Ruby. Это делает потоки Ruby полностью переносимыми, т.е. независимыми от операционной системы. Но в то же время вы точно не получите выгоду от использования родных, нативных потоков. Что это значит?

                            Вы можете столкнуться с голоданием (thread starvation — это когда поток с маленьким приоритетом не имеет шанса запуститься). Если вы хотите заблокировать ваши потоки, то со скрежетом остановится целый процесс. А если возникнет ситуация, что некоторые потоки будут посылать вызовы операционной системе, для выполнения которых требуется немалое время, то все потоки будут висеть, пока интерпретатор не получит контроль обратно. И наконец, если ваша машина имеет больше одного процессора, потоки Ruby не будут это использовать, т.к. они запускаются в одном процессе, а в одиночном родном потоке они будут вынуждены запускаться на одном процессоре единовременно.

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