Всем привет,
Напомню у нас есть http://friendfeed.com/flatsoft куда можно засовывать полезные статьи.
Попробую делать обзоры раз в неделю.
Google выпускает тренажер для хакеров Jarlsberg
По полочкам рассказывается о том, какие бывают дырки в приложениях и как их попробовать на тестовом приложении, очень актуально думаю для нас ;) http://jarlsberg.appspot.com/part1
Как при помощи netstat мониторить сервак на предмет количества подключений на различные порты
- netstat -lnp - какие процессы какие интерфейсы и порты слушают
- netstat -ant - активные соединения в различных состояниях
- netstat -ant | grep 80 | wc -l - количество открытых коннектов на 80 порт
Сатья-мотиватор, почему клево писать Open source
Raiscast: Introducing Devise
Новый гем для создания авторизации и аутентификации, все выглядит руляще
Ruby Packaging Standard, 0.5-draft
Попытка чувака описать, как правильно делать либы и гемы, в частности как раскладывать файлики по каталогам, Ильдар интересовался
Hopping in the cloud
Рульная статья от Роботов как они развивали Hoptoad. В частности я узнал, что Redis рулит и на базе него ребята из github сделали систему для выполнения задач в фоне (URBP) http://github.com/blog/542-introducing-resque
Unobtrusive JavaScript
Статья для тех, кто еще не в курсе, что писать вызовы обработчиков напрямую в теге неруляще, руляще вещать событие.
Спасибо,
Тимур
3 Comments | Posted in RubyOnRails
У нас в компании открылась вакансия на системного администратора. Рассматриваем кандидатов, ищем опытных и исполнительных. Он должен будет мониторить состояние серверов, поднимать/удалять хосты, смотреть логи, если что-то падает или работает не так, обновлять софт на серверах и прочее.
Требования:
Хорошее знание linux, знание shell (ruby, strace, tcpdump), так же приветствуется умение быстро найти ошибку и пофиксить её, знать как поднять, подтюнить nginx,apache, mysql.
Условия:
Работа в офисе, полный рабочий день с 11.00 до 20.00. Чай/кофе за счет компании. Зарплата 35000 руб., дальнейшее увеличение зарплаты обсуждается индивидуально.
2 Comments | Posted in General
Иногда некоторые вещи, которые кажутся простыми, заставляют выбегать курить каждые 5 минут, и рвать остатки волос на голове.
Так произошло и сегодня - принтер HP M1120, подключенный к принт-серверу, моргал кнопочкой “Ready”, но упорно не хотел печатать. Ни через тестовую печать принт-сервера, ни через тестовую печать CUPS. Недолго думая, сходил на сайт hp, скачал драйвера под linux, и тут же впал в ступор: в отладочном журнале были ошибки типа “hpprn.cpp:429: Get 48 bytes error”, о которых google скромно умалчивал. Конечно, были протестированы и драйвера из пакета с сайта hp, и те, что были в комплекте с cups, и пучок других, которые твёрдо гарантировали что будут работать.
К концу 6 часа я всё таки нашёл решение, которое может кому-то пригодиться:
1. необходимо поставить пакеты foo2zjs , foo2hp и hplip
2. Именно для этого принтера (HP M 1120) подходит pdd файл от HP LaserJet 1022 (если у вас FC или CentOS, то скорее всего он будет лежать в /usr/share/cups/model/HP-LaserJet_1022.ppd.gz )
3. В настройках принтера необходимо указать размер бумаги A4, иначе принтер будет выплёвывать чистые листы.
Profit, что ни говори.
3 Comments | Posted in General
Одно из последних корпоративных мероприятий в жизни нашей компании — это поход в боулинг, который находится в ТЦ «Тандем». Приурочено данное мероприятие было к 23 февраля.
Прилагаем краткий фото-отчет, в котором хоть и не удалось запечатлеть выбитых страйков и сплитов, зато виден энтузиазм сотрудников — самых активных участников игры! :)
Надеемся, что посещение боулинга станет традиционным для нашего коллектива и возможно кто-нибудь из сотрудников станет участвовать в многочисленных турнирах, соревнуясь с опытными боулерами. Удачи!
1 Comment | Posted in Events
У нас в компании часто возникает необходимость протестировать приложение на предмет работы с реальными данными. Причём, данные должны быть максимально приближены к реальным как с качественной стороны, так и с количественной. Работу по наполнению базы такими данными значительно упрощают гемы Populator и Faker.
Предположим, что у нас есть модель User:
email:string
first_name:string
last_name:string
ssn:string
security_question:string
answer:string
phone:string
address:string
city:string
state:string
zip:string
Чтобы сгенерировать для таблицы users 1000 тестовых пользователей, будем использовать следующий код:
require 'populator'
require 'faker'
# Populate DB with Users
User.populate(1000) do |user|
user.email = Faker::Internet.email
user.first_name = Faker::Name.first_name
user.last_name = Faker::Name.last_name
user.ssn = Faker.numerify("###-##-####")
user.security_question = Populator.words(4..10)
user.answer = Populator.words(1..3)
user.phone = Faker.numerify("#"*10)
user.address = Faker::Address.street_address
user.city = Faker::Address.city
user.state = Faker::Address.us_state_abbr
user.zip = Faker::Address.zip_code
end
Следует отметить, что Populator не наследует ActiveRecord-модель, а работает с БД напрямую с целью повышения производительности. В качестве значения полей можно передавать массивы или рейнджи, Populator автоматически выберет случайное.
user.sex = ["male", "female"]
user.age = 20..30
No Comments | Posted in General, RubyOnRails