Не успел мир оценить по достоинству новые аккумуляторы Eneloop XX, как компания Sanyo подготовила ещё несколько сюрпризов в этом году… встречайте новинки — аккумуляторы с низким саморазрядом типоразмера AA - Sanyo Eneloop PRO и Sanyo Eneloop PLUS
Юра @xxxYURAxxx
User
Немного про Bash и смежные науки. Часть 1
5 min
1.7KЕсли вы активно используете Linux для администраторских задач, то наверняка заглядываете время от времени в консоль (или живёте в ней). Несмотря на активное вытеснение текстового интерфейса графическим, а тыкать галочки и нажимать на кнопочки всё-таки интуитивнее, что породило целое поколение эникейщиков, консоль была, есть и будет эффективным средством общения с компьютером. Данная статья рассчитана на тех, кто уже как бы знаком с Bash (Bourne-again Shell), самой популярной реализацией командной оболочки. Этот терминал уже много лет используется по умолчанию чуть ли не в каждом дистрибутиве Linux, так что новички даже не догадываются, что бывают и другие оболочки. Bash пронизан мудростью наших UNIX-предков и всячески рекомендуется для освоения. Сейчас вы увидите, что консоль бывает полезна не только для команд вида «sudo /etc/rc.d/network restart» :)
+24
Почтовая кухня #1: DNS
3 min
70KДумаю, многим будет интересно наконец-то узнать, как работает почта. В нескольких статьях я попытаюсь максимально простым языком расписать все основные вопросы, связанные с работой электронной почты вообще и нужными настройками — в частности.
+89
Оптимизация любимой Ubuntu/Gnome/ПО
8 min
6.6KОригинал vasilisc.com/speedup_ubuntu
Пока осваивал Убунту, перечитал множества статей об ускорении Убунту, как в плане загрузки, так и работы вообще.
Пока осваивал Убунту, перечитал множества статей об ускорении Убунту, как в плане загрузки, так и работы вообще.
+15
JS tips
1 min
402Алгоритм получение результата А && B
Если операнд A истинный (true, «string», someObj), результатом является B, иначе — А.
То бишь код:
Может быть заменен на более компактный:
Алгоритм получение результата А || B
Если операнд A истинный, результатом является A, иначе — 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+2
Логика английских времен
6 min
72KИзучавшие или изучающие английский язык знают, каким страшным может казаться множество английских временных форм глаголов.
Всего в английском 12 временных форм. А в русском-то, на первый взгляд, всего 3, и как их связать с английскими, для новичка может быть совершенно не понятно.
Всего в английском 12 временных форм. А в русском-то, на первый взгляд, всего 3, и как их связать с английскими, для новичка может быть совершенно не понятно.
+150
Восстановление битых пикселей ЖК
1 min
131KСомневался в успешности метода, а также в том, что мой вечно салатовый пиксель, застывший полгода назад и постоянно мозоливший мне глаз, «станет на место». Но…
О чудо, помогло!
О чудо, помогло!
+141
Эти замечательные VPN или о чём нужно помнить пользователям shared-ресурсов.
3 min
2.8KВводная информация:
Провайдером мне предоставлен «доступ к сети с использованием технологии 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-роутеру. Поскольку права сотрудников не были должным образом ограничены, то они пооткрывали диски друг для друга. Рабочие документы, базы данных, переписка, фотографии – всё открыто.
Провайдером мне предоставлен «доступ к сети с использованием технологии 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-роутеру. Поскольку права сотрудников не были должным образом ограничены, то они пооткрывали диски друг для друга. Рабочие документы, базы данных, переписка, фотографии – всё открыто.
+29
Да, но кто сказал, что они купят это?
5 min
82KTranslation
Продолжение перевода серии статей «5 уроков просмотра стартапов»,
прошлая статья Настоящие нечестные конкурентные преимущества
На сотнях стартап питчей в Capital Factory, не нашелся и десяток людей, которые были бы готовы сказать «если вы создадите этот продукт, я дам вам X долларов».
Задумайся над этим: сотни людей готовы уволиться с постоянной работы, потратить свои сбережения, рискнуть личной репутацией, трудиться 70 часов в неделю, пережить такой же стресс, как и рождение ребенка (поверьте мне, я испытал рождение и ребенка, и стартапов)… и все это при том, что нет жалкого десятка людей, действительно готовых заплатить за то, что предлагают стартаперы.
Недальновидно, не правда ли?
прошлая статья Настоящие нечестные конкурентные преимущества
На сотнях стартап питчей в Capital Factory, не нашелся и десяток людей, которые были бы готовы сказать «если вы создадите этот продукт, я дам вам X долларов».
Задумайся над этим: сотни людей готовы уволиться с постоянной работы, потратить свои сбережения, рискнуть личной репутацией, трудиться 70 часов в неделю, пережить такой же стресс, как и рождение ребенка (поверьте мне, я испытал рождение и ребенка, и стартапов)… и все это при том, что нет жалкого десятка людей, действительно готовых заплатить за то, что предлагают стартаперы.
Недальновидно, не правда ли?
+45
11 важных вещей, которые нужно знать про DevOps — часть первая
9 min
303KTranslation
От переводчика
В 2009 года за рубежом возникло движение, которое назвало себя DevOps. На первый взгляд это разработчики с навыками сисадминов и сисадмины с навыками разработчиков. Но на самом деле это отнюдь не так. Данное подход имеет четкие цели, философию, инструменты и методы, которые только некоторые русскоязычные компании начинают использовать. Мне кажется, что данный подход у нас незаслуженно игнорируется и мне хотелось бы рассказать об 11 вещах, которые нужно знать о DevOps, в частности:
- что такое DevOps
- каковы его ценности
- как он внедряется
- кому он приносит пользу
Надеюсь, этот текст вам понравится.
+9
Яндекс.Диск как файловая система
1 min
144KНедавно Яндекс анонсировал свой новый сервис, подобный DropBox'у. Многие его сразу же начали поливать из ведра, хотя, я думаю, зря.
Один из плюсов лично для меня, линуксоида — не нужно устанавливать дополнительные приложения, как в случае с DropBox'ом. Сервис можно подключить через файловый менеджер Nautilus, используя WebDAV. Что я, собственно, сразу же и сделал.
Однако, я не стал на этом ограничиваться, ведь гуёвый доступ — не совсем хорошо, консольки никто не отменял.
+78
Time Machine: бекапим OS X Lion на Ubuntu 12.04 LTS сервер
4 min
28KЕсли кто не знает, Time Machine — это такой замечательный бэкап-сервис из коробки для Apple OS X, тут и тут можно почитать поподробнее. Если у вас есть мак, и вы не пользуетесь «машиной времени», то это совершенно напрасно. Time Machine делает постоянные дифференциальные бэкапы, поэтому она удобна даже в случае прекрасной жизни ваших HDD / SSD. Можно в любой момент открутить назад историю и восстановить случайно удаленный файл, или, что еще важнее, предыдущую версию измененного файла.
Предполагается, что пользователи будут использовать либо обычный жесткий диск, либо специальный сетевой девайс Time Capsule. Традиционный внешний жесткий диск — решение для очень организованных людей, которые регулярно (хотя бы ежедневно) будут его подключать для автоматического бэкапа, иначе польза от тайм машины будет весьма ограничена (хотя прошлогодний бэкап все же лучше, чем совсем ничего). С тайм-капсулой будет гораздо удобнее и надежнее. Кроме функции бэкапа, она может выполнять еще и функцию сетевой шары, раздачи Wi-Fi (фактически Time Capsule — это Wi-Fi роутер с HDD). Но устройство стоит денег, и оно не такое универсальное. Мне захотелось прикрутить на свой сервер работающий на Ubuntu возможность делать бэкапы тайм-машиной. И это не так сложно, о чем и будет эта заметка.
+33
Внутренности jQuery. Поиск кода, выполняемого по событию
4 min
25KЧем дальше в лес, тем толще партизаны. Нет, не так. Чем старше веб, тем больше джаваскрипта
Клиентского кода в веб-приложениях с каждым годом действительно становится все больше. Подчас это десятки файлов с сотнями функций. И что делать, когда нам нужно поменять код, выполняемый по событию (например, клик по ссылке). Как его найти? Задавшись решением этой задачи, я придумал несколько разных вариантов. Каждый из них имеет свои плюсы и минусы. И в конце статьи я предлагаю метод, который мне кажется оптимальным.
Клиентского кода в веб-приложениях с каждым годом действительно становится все больше. Подчас это десятки файлов с сотнями функций. И что делать, когда нам нужно поменять код, выполняемый по событию (например, клик по ссылке). Как его найти? Задавшись решением этой задачи, я придумал несколько разных вариантов. Каждый из них имеет свои плюсы и минусы. И в конце статьи я предлагаю метод, который мне кажется оптимальным.
+118
Простой и эффективный метод отразить http DDoS от 50мбит с помощью nginx и iptables
7 min
67KЗдравствуй, Хабр!
Предлагаю твоему вниманию простой и в то же время эффективный метод борьбы с http DDoS. На основе сервера Xeon 2.5GHz / 4Gb RAM / SAS можно отражать атаку примерно до 300 Мбит/с (значение получено методом экстраполяции).
Производится тонкая настройка параметров системы. Так что север будет способен выдерживать больше подключений от ботнета, чем канал до сервера сможет пропустить.
Борьба с Http DDoS на выделенном сервере или ВПС. Максимальная возможная мощность сдерживания DDoS атаки ограничивается физическими возможностями сервера и пропускной способностью канала.
Ваш сайт будет правильно индексироваться во время атаки, что позволит сохранить позиции в выдаче поисковых систем. Особенно актуально для сайтов с большими SEO бюджетами.
На время атаки придется отказаться от некоторых сервисов вашего сайта. Возможно, придется расширить полосу канала, перенести сайт на более мощный сервер. Эффективность достигается максимизацией коэффициента масштабируемости системы. Обеспечивается быстрое наращивание аппаратных ресурсов при увеличении мощности атаки.
Предлагаю твоему вниманию простой и в то же время эффективный метод борьбы с http DDoS. На основе сервера Xeon 2.5GHz / 4Gb RAM / SAS можно отражать атаку примерно до 300 Мбит/с (значение получено методом экстраполяции).
Способ реализация
Производится тонкая настройка параметров системы. Так что север будет способен выдерживать больше подключений от ботнета, чем канал до сервера сможет пропустить.
Область применения
Борьба с Http DDoS на выделенном сервере или ВПС. Максимальная возможная мощность сдерживания DDoS атаки ограничивается физическими возможностями сервера и пропускной способностью канала.
SEO под DDoS-ом
Ваш сайт будет правильно индексироваться во время атаки, что позволит сохранить позиции в выдаче поисковых систем. Особенно актуально для сайтов с большими SEO бюджетами.
Стоимость и эффективность
На время атаки придется отказаться от некоторых сервисов вашего сайта. Возможно, придется расширить полосу канала, перенести сайт на более мощный сервер. Эффективность достигается максимизацией коэффициента масштабируемости системы. Обеспечивается быстрое наращивание аппаратных ресурсов при увеличении мощности атаки.
+165
17 простых советов для повышения продуктивности
3 min
33KЭти советы — не очередная компиляция из книг и блогов, посвященных продуктивности. Каждый совет основан на моём личном опыте. На каждый совет я мог бы дать гарантию, если бы гарантия на советы была возможна в принципе.
Вступление окончено, переходим к советам!
Вступление окончено, переходим к советам!
+124
Rails custom Scaffolding
4 min
26KНаверное каждый в начале работы с 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
Генерирует:
- contoller's с поддержкой will_paginate, русскоязычными сообщениями
- model's с поддержкой will_paginate
- view's с заданным нами содержимым и в формате haml
- Rspec тесты, вместо Test::Unit
- Factory Girl factories вместо стандартных fixtures
+35
Использование Deferred объектов в jQuery 1.5
6 min
37KTranslation
Deferred объекты появились в jQuery 1.5. Они позволяют отделить логику, которая зависит от результатов выполнения действия от самого действия. Для JavaScript Deferred объекты не новы, они уже были в MochiKit и Dojo, но с изменениями логики jQuery ajax от Julian Aubourg, внедрение Deferred объектов было неминуемо. С Deferred объектами несколько callback могут быть связаны с результатом задачи и любые из них могут быть привязаны к действию даже после начала его выполнения. Выполняемая задача может быть асинхронна, но не обязательно.
Deferred объекты теперь встроены в $.ajax() таким образом вы будете получать их автоматически. Обработчики теперь могут быть связаны с результатом следующим образом:
Deferred объекты теперь встроены в $.ajax() таким образом вы будете получать их автоматически. Обработчики теперь могут быть связаны с результатом следующим образом:
// $.get, ajax запрос, он асинхронный по умолчанию
var req = $.get('foo.htm')
.success(function( response ){
// что-нибудь делаем с ответом
})
.error(function(){
// делаем что-нибудь если запрос провалился
});
// это выполнится перед тем как $.get() будет выполнено
doSomethingAwesome();
// Делаем что-то ещё перед завершением запроса
req.success(function( response ){
// делаем что-то ещё с ответом
// он будет выполнен когда запрос завершится, а если запрос завершен, то будет вызван немедленно
// если запрос уже был выполнен
});
+110
Правильный захват контекста в Javascript
5 min
37K Довольно часто во многих статьях я вижу, как люди захватывают контекст this для использования в анонимной функции и удивляюсь — то, что уже стало стандартом — просто ужасная практика, которая противоречит всем канонам программирования. Вам знакома такая запись?
Может вам тоже стоит переосмыслить этот аспект?
var self = this;
Может вам тоже стоит переосмыслить этот аспект?
+61
Ruby on Rails 3 — Заметки к финальному релизу
19 min
5.6KTranslation
Оглавление
- Переход на Rails 3.0
- Rails 3 требует Ruby 1.8.7+
- Объект Application в Rails
script/*
заменен наscript/rails
- Зависимости и
config.gem
- Процесс перехода
- Создание приложения на Rails 3.0
- Включение гемов
- Жизнь на грани
- Архитектурные изменения
- Перезарядка Railties
- Все компоненты ядра Rails теперь независимы
- Абстракция Active Model
- Абстракция контроллеров
- Интеграция Arel
- Извлечение Mail
- Документация
- Интернационализация
- Railties
- Action Pack
- Абстрактный контроллер
- Action Controller
- Action Dispatch
- Action View
- Active Model
- Абстракция ORM и интерфейс c Action Pack
- Валидации
- Active Record
- Интерфейс запросов
- Усовершенствования
- Патчи и устаревшие методы
- Active Resourсe
- Active Support
- Action Mailers
- О создателях
+89
Многопоточность в Ruby
9 min
38KTranslation
Перевод главы «Multithreading» книги David Thomas и Andrew Hunt «Programming Ruby: The Pragmatic Programmers' Guide, Second Edition».
Часто самым простым способом выполнить одновременно две вещи является использование потоков в Ruby. Они являются внутрипроцессными, встроенными в интерпретатор Ruby. Это делает потоки Ruby полностью переносимыми, т.е. независимыми от операционной системы. Но в то же время вы точно не получите выгоду от использования родных, нативных потоков. Что это значит?
Вы можете столкнуться с голоданием (thread starvation — это когда поток с маленьким приоритетом не имеет шанса запуститься). Если вы хотите заблокировать ваши потоки, то со скрежетом остановится целый процесс. А если возникнет ситуация, что некоторые потоки будут посылать вызовы операционной системе, для выполнения которых требуется немалое время, то все потоки будут висеть, пока интерпретатор не получит контроль обратно. И наконец, если ваша машина имеет больше одного процессора, потоки Ruby не будут это использовать, т.к. они запускаются в одном процессе, а в одиночном родном потоке они будут вынуждены запускаться на одном процессоре единовременно.
Все это звучит страшновато. Тем не менее, на практике во многих случаях выгода от использования потоков во многом перевешивает любые потенциальные проблемы, которые могут возникнуть. Потоки Ruby являются эффективным и легким путем достижения параллельности в вашем коде. Вы просто должны понять основные проблемы реализации, и, соответственно, архитектуру.
Часто самым простым способом выполнить одновременно две вещи является использование потоков в Ruby. Они являются внутрипроцессными, встроенными в интерпретатор Ruby. Это делает потоки Ruby полностью переносимыми, т.е. независимыми от операционной системы. Но в то же время вы точно не получите выгоду от использования родных, нативных потоков. Что это значит?
Вы можете столкнуться с голоданием (thread starvation — это когда поток с маленьким приоритетом не имеет шанса запуститься). Если вы хотите заблокировать ваши потоки, то со скрежетом остановится целый процесс. А если возникнет ситуация, что некоторые потоки будут посылать вызовы операционной системе, для выполнения которых требуется немалое время, то все потоки будут висеть, пока интерпретатор не получит контроль обратно. И наконец, если ваша машина имеет больше одного процессора, потоки Ruby не будут это использовать, т.к. они запускаются в одном процессе, а в одиночном родном потоке они будут вынуждены запускаться на одном процессоре единовременно.
Все это звучит страшновато. Тем не менее, на практике во многих случаях выгода от использования потоков во многом перевешивает любые потенциальные проблемы, которые могут возникнуть. Потоки Ruby являются эффективным и легким путем достижения параллельности в вашем коде. Вы просто должны понять основные проблемы реализации, и, соответственно, архитектуру.
+33
Information
- Rating
- Does not participate
- Location
- Минская обл., Беларусь
- Date of birth
- Registered
- Activity