Pull to refresh
5
0

User

Send message

Sanyo Eneloop PRO и Sanyo ENELOOP PLUS

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

image

Читать дальше →
Total votes 17: ↑9 and ↓8 +1
Comments 18

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

Reading time 5 min
Views 1.6K
Если вы активно используете Linux для администраторских задач, то наверняка заглядываете время от времени в консоль (или живёте в ней). Несмотря на активное вытеснение текстового интерфейса графическим, а тыкать галочки и нажимать на кнопочки всё-таки интуитивнее, что породило целое поколение эникейщиков, консоль была, есть и будет эффективным средством общения с компьютером. Данная статья рассчитана на тех, кто уже как бы знаком с Bash (Bourne-again Shell), самой популярной реализацией командной оболочки. Этот терминал уже много лет используется по умолчанию чуть ли не в каждом дистрибутиве Linux, так что новички даже не догадываются, что бывают и другие оболочки. Bash пронизан мудростью наших UNIX-предков и всячески рекомендуется для освоения. Сейчас вы увидите, что консоль бывает полезна не только для команд вида «sudo /etc/rc.d/network restart» :)
Да ну?
Total votes 40: ↑32 and ↓8 +24
Comments 38

Почтовая кухня #1: DNS

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

Часть 1 - DNS.
Total votes 97: ↑93 and ↓4 +89
Comments 76

JS tips

Reading time 1 min
Views 381
Алгоритм получение результата А && 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
Total votes 34: ↑18 and ↓16 +2
Comments 9

Логика английских времен

Reading time 6 min
Views 71K
Изучавшие или изучающие английский язык знают, каким страшным может казаться множество английских временных форм глаголов.
Всего в английском 12 временных форм. А в русском-то, на первый взгляд, всего 3, и как их связать с английскими, для новичка может быть совершенно не понятно.
Читать дальше →
Total votes 196: ↑173 and ↓23 +150
Comments 202

Восстановление битых пикселей ЖК

Reading time 1 min
Views 124K
Сомневался в успешности метода, а также в том, что мой вечно салатовый пиксель, застывший полгода назад и постоянно мозоливший мне глаз, «станет на место». Но…
О чудо, помогло!
screenshot

Читать дальше →
Total votes 143: ↑142 and ↓1 +141
Comments 144

Эти замечательные VPN или о чём нужно помнить пользователям shared-ресурсов.

Reading time 3 min
Views 2.7K
Вводная информация:
Провайдером мне предоставлен «доступ к сети с использованием технологии 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-роутеру. Поскольку права сотрудников не были должным образом ограничены, то они пооткрывали диски друг для друга. Рабочие документы, базы данных, переписка, фотографии – всё открыто.
Читать дальше →
Total votes 31: ↑30 and ↓1 +29
Comments 67

Да, но кто сказал, что они купят это?

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


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



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

Недальновидно, не правда ли?
Читать дальше →
Total votes 75: ↑60 and ↓15 +45
Comments 60

11 важных вещей, которые нужно знать про DevOps — часть первая

Reading time 9 min
Views 302K

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


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

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

Читать дальше →
Total votes 15: ↑12 and ↓3 +9
Comments 11

Яндекс.Диск как файловая система

Reading time 1 min
Views 142K

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

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

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

Подключим Яндекс.Диск как файловую систему
Total votes 118: ↑98 and ↓20 +78
Comments 181

Time Machine: бекапим OS X Lion на Ubuntu 12.04 LTS сервер

Reading time 4 min
Views 28K



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

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

Читать дальше →
Total votes 51: ↑42 and ↓9 +33
Comments 33

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

Reading time 4 min
Views 24K
Чем дальше в лес, тем толще партизаны. Нет, не так. Чем старше веб, тем больше джаваскрипта

Клиентского кода в веб-приложениях с каждым годом действительно становится все больше. Подчас это десятки файлов с сотнями функций. И что делать, когда нам нужно поменять код, выполняемый по событию (например, клик по ссылке). Как его найти? Задавшись решением этой задачи, я придумал несколько разных вариантов. Каждый из них имеет свои плюсы и минусы. И в конце статьи я предлагаю метод, который мне кажется оптимальным.
Читать дальше →
Total votes 132: ↑125 and ↓7 +118
Comments 34

Простой и эффективный метод отразить http DDoS от 50мбит с помощью nginx и iptables

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

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

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

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

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

SEO под DDoS-ом

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

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

На время атаки придется отказаться от некоторых сервисов вашего сайта. Возможно, придется расширить полосу канала, перенести сайт на более мощный сервер. Эффективность достигается максимизацией коэффициента масштабируемости системы. Обеспечивается быстрое наращивание аппаратных ресурсов при увеличении мощности атаки.
Читать дальше →
Total votes 193: ↑179 and ↓14 +165
Comments 78

17 простых советов для повышения продуктивности

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

Вступление окончено, переходим к советам!
Читать дальше →
Total votes 180: ↑152 and ↓28 +124
Comments 116

Rails custom Scaffolding

Reading time 4 min
Views 25K

Наверное каждый в начале работы с 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

Читать дальше →
Total votes 41: ↑38 and ↓3 +35
Comments 26

Использование Deferred объектов в jQuery 1.5

Reading time 6 min
Views 37K
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 ){
   // делаем  что-то ещё с ответом
   // он будет выполнен когда запрос завершится, а если запрос завершен, то будет вызван немедленно
   // если запрос уже был выполнен
});

Читать дальше →
Total votes 116: ↑113 and ↓3 +110
Comments 19

Правильный захват контекста в Javascript

Reading time 5 min
Views 37K
Довольно часто во многих статьях я вижу, как люди захватывают контекст this для использования в анонимной функции и удивляюсь — то, что уже стало стандартом — просто ужасная практика, которая противоречит всем канонам программирования. Вам знакома такая запись?
var self this;
Может вам тоже стоит переосмыслить этот аспект?
Читать дальше →
Total votes 113: ↑87 and ↓26 +61
Comments 147

Ruby on Rails 3 — Заметки к финальному релизу

Reading time 19 min
Views 5.6K

Оглавление

  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. О создателях
Читать дальше →
Total votes 109: ↑99 and ↓10 +89
Comments 57

Многопоточность в Ruby

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

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

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

Все это звучит страшновато. Тем не менее, на практике во многих случаях выгода от использования потоков во многом перевешивает любые потенциальные проблемы, которые могут возникнуть. Потоки Ruby являются эффективным и легким путем достижения параллельности в вашем коде. Вы просто должны понять основные проблемы реализации, и, соответственно, архитектуру.
Читать дальше →
Total votes 41: ↑37 and ↓4 +33
Comments 30

Information

Rating
Does not participate
Location
Минская обл., Беларусь
Date of birth
Registered
Activity