laravel 5 Homestead Создание проекта

Установка заняла 10 минут

Could not fetch https://api.github.com/repos/symfony/CssSelector/zipball/d45b306421462295e76b94bcf76b963867450327, enter your GitHub credentials to go
 over the API rate limit
The credentials will be swapped for an OAuth token stored in /home/vagrant/.composer/auth.json, your password will not be stored
To revoke access to this token you can visit https://github.com/settings/applications
Username:

prntscr.com/5viwbd

Надо ввести ваш e-mail и пароль от GitHub.com

Читать дальше

Debian Jessie установка Pidgin vkontakte

Использовался плагин
bitbucket.org/olegoandreev/purple-vk-plugin

Методом 1 не получилось установить т.к. небыл найден репозиторий

Ош  http://ppa.launchpad.net jessie/main amd64 Packages                             
  404  Not Found
Ош  http://ppa.launchpad.net jessie/main i386 Packages
  404  Not Found
Игн http://ppa.launchpad.net jessie/main Translation-ru_RU
Игн http://ppa.launchpad.net jessie/main Translation-ru
Игн http://ppa.launchpad.net jessie/main Translation-en
Получено 102 kБ за 5с (20,2 kБ/c)
W: Не удалось получить http://ppa.launchpad.net/purple-vk-plugin/dev/ubuntu/dists/jessie/main/binary-amd64/Packages  404  Not Found

W: Не удалось получить http://ppa.launchpad.net/purple-vk-plugin/dev/ubuntu/dists/jessie/main/binary-i386/Packages  404  Not Found

E: Некоторые индексные файлы не скачались. Они были проигнорированы или вместо них были использованы старые версии.


Дополненая версия
Читать дальше

lavavel 5 homestead vagrant Ubuntu x32

Итого:
Создал батник который сам все ставит качает и создает виртуалку x32.
После обновления. Всё что поставилось, потом стал несовместим php5-redis c PHP5.6
Надо было доустанавливать руками зависимости и mailparse и т.п.

Статья посвящается тем у кого нет поддержки на процессоре VT-x, AMD-V или если поддержка VT-x, AMD-V программно запрещена производителем то habrahabr.ru/post/152056/

VirtualBox — Ошибка, Аппаратное ускорение (VT-x/AMD-V) не доступно в Вашей системе

т.е. вы не сможете запустить Homestead Laravel Ubuntu x64 у вас будут разрые ошибки выскакивать которые вы не увидите ;)
Читать дальше

Уязвимость BadUSB для Phison 2251-03 (часть 4)

Убив первую флешку, через пару дней пошел покупать другую для выкачивания на неё оригинальной прошивки и восстановления первой флешки. Но к сожалению те 9 штук в этом магазине уже разобрали. Наверное продавцы поняв какой контроллер нужен и зачем, сами раскупили все и перепродали. Или какие другие неведомые люди охотились за ними.

И так я купил полную копию флешки поступившей в продажу того же числа и почти той партии. Но контроллер оказался Phison PS2307, что нам совсем не подходит. Придется использовать её для других целей, жаль объём маленький.
Оставались еще 16GB флешки но рисковать небыло никакого желания, чтоб ошибиться с контроллером.


Продолжение:
BadUSB для Phison 2251-03 (часть 1)
BadUSB для Phison 2251-03 Payload (часть 2)
BadUSB для Phison 2251-03 ошибки (часть 3)
BadUSB для Phison 2251-03 восстановление (часть 4)
Читать дальше

Уязвимость BadUSB для Phison 2251-03 (часть 3)

Ошибка при создании оригинальной прошивки


Кажется это произошло из-за того что флешка долго находилась в boot-режиме и где-то отсоединилась что ли.

C:\Users\1>C:\fw\Psychson-master\tools\DriveCom.exe /drive=H /action=DumpFirmware /burner=C:\fw\fw_bn\BN03V114M.BIN /firmware=C:\fw\currentfw.bin
Action specified: DumpFirmware
FATAL: System.InvalidOperationException: DeviceIoControl failed: 0079
   в DriveCom.PhisonDevice._SendCommand(SafeFileHandle handle, Byte[] cmd, Byte[] data, Int32 bytesExpected) в c:\Users\1\Desktop\Psychson-master\DriveCom\DriveCom\Phis
   в DriveCom.PhisonDevice.SendCommand(Byte[] cmd, Int32 bytesExpected) в c:\Users\1\Desktop\Psychson-master\DriveCom\DriveCom\PhisonDevice.cs:строка 295
   в DriveCom.Startup._DumpFirmware(String fileName) в c:\Users\1\Desktop\Psychson-master\DriveCom\DriveCom\Startup.cs:строка 341
   в DriveCom.Startup.Main(String[] args) в c:\Users\1\Desktop\Psychson-master\DriveCom\DriveCom\Startup.cs:строка 99



Action specified: SendExecutable
FATAL: System.InvalidOperationException: DeviceIoControl failed: 048F



Ошибка при восстановлении оригинальной прошивки

Переводим флешку в boot-режим.
Прошивка не хочет востанавливаться из оригинала.
Как понял это не подходит для
Kingston Digital 8GB USB 3.0 DataTraveler (DT100G3/8GB)* — Using PS2251-03 (Программа DriveCom.exe не работает для этой флэшки, вам понадобится Phison MPALL Tools для прошивки.)

Action specified: SendFirmware
Gathering information...
FATAL: System.InvalidOperationException: DeviceIoControl failed: 048F
   в DriveCom.PhisonDevice._SendCommand(SafeFileHandle handle, Byte[] cmd, Byte[] data, Int32 bytesExpected) в c:\Users\1\Desktop\Psychson-master\DriveCom\DriveCom\Phis
   в DriveCom.PhisonDevice.SendCommand(Byte[] cmd, Int32 bytesExpected) в c:\Users\1\Desktop\Psychson-master\DriveCom\DriveCom\PhisonDevice.cs:строка 295
   в DriveCom.PhisonDevice.RequestVendorInfo() в c:\Users\1\Desktop\Psychson-master\DriveCom\DriveCom\PhisonDevice.cs:строка 140
   в DriveCom.PhisonDevice.GetChipType() в c:\Users\1\Desktop\Psychson-master\DriveCom\DriveCom\PhisonDevice.cs:строка 170
   в DriveCom.Startup._GetInfo() в c:\Users\1\Desktop\Psychson-master\DriveCom\DriveCom\Startup.cs:строка 384
   в DriveCom.Startup._SendFirmware() в c:\Users\1\Desktop\Psychson-master\DriveCom\DriveCom\Startup.cs:строка 365
   в DriveCom.Startup.Main(String[] args) в c:\Users\1\Desktop\Psychson-master\DriveCom\DriveCom\Startup.cs:строка 114



Продолжение:
BadUSB для Phison 2251-03 (часть 1)
BadUSB для Phison 2251-03 Payload (часть 2)
BadUSB для Phison 2251-03 ошибки (часть 3)
BadUSB для Phison 2251-03 восстановление (часть 4)
Читать дальше

Уязвимость BadUSB для Phison 2251-03 (часть 2)

4. Запуск демо 1 (HID Payload)


Сценарии команд Rubber Ducky для использования в Duckencoder и создания inject.bin

Скачиваем любой скрипт или пишем свой github.com/hak5darren/USB-Rubber-Ducky/wiki/Payloads
Сохраняем в C:\fw\ducky\hello_world.txt или ваше название на ваш вкус.

Читать дальше

Уязвимость BadUSB для Phison 2251-03 (часть 1)

Узнал об этом еще с английской рассылки SANS Vol. 16 Num. 79.
Собирался первым перевести на русский язык(на github и так написаны команды ) и разобраться с этим еще 4 октября, но дела не позволяли потратить на это время и денег на поиски конкретной флешки не было.
В итоге найдя единственный магазин в городе где были эти флешки Kingston DataTraveler 3.0 T111 8GB зайдя в него и уговаривая продавцов вскрыть упаковку не получилось. Пришлось купить наугад. И мы угадали и купили нужную проверив на ноутбуке в магазине. Контроллер оказался PS2251-03 (2303). У нас была куча неописуемой радости и везения!!! В магазине оставалось всего 9 флешек данной модели…

Читать дальше

ZeroNights 2014

Так уж вышло, что конференция выпала на моё День Рождения. И наверно это был самый большой подарок.

Вот наконец то выехал куда то со своего города. Купил билеты еще так давно как можно было. И на поезд заранее купил чтоб отступать было некуда. Пришлось сдвигать все планы, клиентов, всех торопить и собирать к этому числу денег. Но даже при таком учете я вернулся на занятые денег у клиентов. ))) Пришлось отрабатывать. Да и не просто так поехал в Москву, а по делам, почта России потеряла 2 договора, за 3 месяца не дождавшись их привез лично в руки. Но что то клиент где то пропал.

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

Читать дальше

Rails 4 отличия от Rails 3 или заметки

Отичия учебника Rails 4.0
ruby.railstutorial.org/chapters/
от русского перевода Rails 3.2
railstutorial.ru/chapters/beginning

Манифест файл для app-specific CSS.
app/assets/stylesheets/application.css
Здесь
*= require_tree .
обеспечивает включение всех CSS файлов из директории app/assets/stylesheets (в том числе вложенные субдиректории) в CSS приложения. Строка
*= require_self
гарантирует что также будут включены CSS из файла application.css.

Начиная с Rails 3.1, существуют три каноничные директории для статических ассетов, каждая со своим собственным назначением:
app/assets: ассеты специфичные для данного приложения
lib/assets: ассеты для библиотек написанных вашей командой разработчиков
vendor/assets: ассеты сторонних поставщиков (програмного обеспечения)

Загрузка другой вьюхи в шаблон
<%= render 'layouts/header' %>

Генерация контролёра
rails generate controller Users new --no-test-framework

Генерация модели (контроллер Users, но модель User)
rails generate model User name:string email:string

“Любые модификации которые вы сделаете откатятся при выходе”, при работе в песочнице, консоль будет “откатывать” (то есть, отменять) любые изменения базы данных, созданные во время сеанса.
rails console --sandbox


Поиск объектов user Active Record

user = User.new(name: «Michael Hartl», email: «mhartl@example.com») — создать
User.create(name: «A Nother», email: «another@example.org») — создать
user.save
— сохранить
user.destroy
— удалить

User.find(1)
Здесь мы передали id пользователя в User.find; Active Record вернула пользователя с этим атрибутом id.

User.find_by_email(«mhartl@example.com»)
Метод find_by_email автоматически создается библиотекой Active Record на основе email атрибута в таблице users.

User.first
Естественно, first просто возвращает первого пользователя в базе данных.

User.all
all возвращает массив (Раздел 4.3.1) всех пользователей в базе данных.

Обновление

Обратите внимание: заключительный шаг необходим, для того чтобы записать изменения в базу данных. Мы можем увидеть, что произойдет без сохранения, используя reload, которая перезагружает объекты, опираясь на информацию в базе данных:
>> user.email
=> «mhartl@example.net»
>> user.email = «foo@bar.com»
=> «foo@bar.com»
>> user.reload.email
=> «mhartl@example.net»

Второй способ обновить атрибуты заключается в использовании update_attributes:
>> user.update_attributes(name: «The Dude», email: «dude@abides.org»)
=> true
>> user.name
=> «The Dude»
>> user.email
=> «dude@abides.org»
Update_attributes метод принимает хеш атрибутов и в случае успеха выполняет и обновление, и сохранение за один шаг (возвращающая true чтобы указать что сохранение произошло).

Заметим, что если любой из проверок не получится, например, когда требуется пароль, чтобы сохранить запись (как это реализовано в разделе 6.3 ), вызов update_attributes не удастся. Если нам нужно только обновить один атрибут, с помощью особой update_attribute обходит это ограничение:
user.update_attribute(:name, «The Dude»)
=> true
>> user.name
=> «The Dude»

Валидация

проверка на пустоту в модели
validates :name, presence: true
валидация на существование и длинны имени до 50 символов
validates :name, presence: true, length: { maximum: 50 }

VALID_EMAIL_REGEX = /\A[\w+\-.]+@[a-z\d\-.]+\.[a-z]+\z/i
validates :email, presence: true, format: { with: VALID_EMAIL_REGEX }

validates :email, presence: true, format: { with: VALID_EMAIL_REGEX },
uniqueness: { case_sensitive: false }
Использование validates :uniqueness не гарантирует уникальности.

Но что может может пойти не так? А вот что:
  1. Алиса регистрируется на сайте, с email адресом alice@wonderland.com.
  2. Алиса случайно кликает, “Submit” дважды, отправляя два запроса в быстрой последовательности.
  3. Затем происходит следующее: первый запрос создает пользователя в памяти, который проходит проверку, второй запрос делает то же самое, первый запрос пользователя сохраняется, второй запрос пользователя сохраняется.
  4. Результат: две пользовательские записи с одинаковыми адресами электронной почты, несмотря на валидацию уникальности.
К счастью, решение просто в реализации, нам просто необходимо обеспечить уникальность также на уровне базы данных

rails generate migration add_index_to_users_email
В отличие от миграции для пользователей, миграция уникальности электронной почты не предопределена, таким образом, мы должны заполнить ее содержание кодом из
Листинг
http://prntscr.com/27t59t
Миграция для реализации уникальности адреса электронной почты.
db/migrate/[timestamp]_add_index_to_users_email.rb
class AddIndexToUsersEmail < ActiveRecord::Migration
def change
add_index :users, :email, unique: true
end
end

Здесь используется Rails метод add_index для добавления индекса на столбце email таблицы users. Индекс сам по себе не обеспечивает уникальность, но это делает опция unique: true

Заключительный шаг должен мигрировать базу данных:
$ bundle exec rake db:migrate


добавление пароля:
rails generate migration add_password_digest_to_users password_digest:string
Мы можем выбрать любое название для миграции, но было бы удобно, если бы ее название заканчивалось на _to_users, поскольку в этом случае Rails автоматически построит миграцию для добавления столбцов к таблице users. Кроме того, включив второй аргумент, мы дали Rails достаточно информации для построения для нас всей миграци

Консоль


запуск консоли в тестовом режиме
rails console test

запуск сервера
rails server --environment production

миграция базы в продакшен
bundle exec rake db:migrate RAILS_ENV=production

Проверка параметров


ранее было attr_accessible
def create
@user = User.new(user_params)
if @user.save
# Handle a successful save.
else
render 'new'
end
end

private

def user_params
params.require(:user).permit(:name, :email, :password,
:password_confirmation)
end


def create
user = User.find_by_email(params[:session][:email].downcase)
if user && user.authenticate(params[:session][:password])
# Sign the user in and redirect to the user's show page.
else
flash[:error] = 'Invalid email/password combination' # Not quite right!
render 'new'
end
end
Проблема заключается в том, что содержимое флэша существует в течение одного запроса, но, в отличие от редиректа (перенаправления) который мы использовали в — повторный рендеринг шаблона с render не считается запросом. В результате флэш сообщение существует на один запрос дольше чем мы хотим. Например, если мы отправим невалидную информацию, флэш сообщение будет установлено и отображено на странице входа; если мы кликнем на другую страницу, такую как Home, что будет первым запросом после отправки формы, то флэш сообщение будет вновь отображено

Решение:
flash.now[:error] = 'Invalid email/password combination'
render 'new'
мы заменим flash на flash.now, который специально создан для отображения флэш сообщения на отрендеренных страницах; в отличие от содержимого flash, его содержимое исчезает сразу после дополнительного запроса.
Читать дальше

ruby on rails - книги 2013

Более новые книги с озона на верху

  1. Изучаем Ruby
  2. Learning Ruby
    1. www.ozon.ru/context/detail/id/20053276/
    2. Год выпуска: 2008
    3. Версия Ruby: 1.8.6
    4. Версия Rails:

  1. Ruby on Rails. Быстрая веб-разработка
  2. Ruby on Rails: Up and Running
    1. www.ozon.ru/context/detail/id/20053271/
    2. Год выпуска: 2008
    3. Версия Ruby:
    4. Версия Rails: 1.0

  1. Ruby на платформе Java
    1. www.ozon.ru/context/detail/id/6000964/
    2. Год выпуска:
    3. Версия Ruby:
    4. Версия Rails:

  1. Путь Rails. Подробное руководство по созданию приложений в среде Ruby on Rails
  2. The Rails Way
    1. www.ozon.ru/context/detail/id/4244230/
    2. Год выпуска: 2009
    3. Версия Ruby:
    4. Версия Rails: 1.2

  1. Rails. Сборник рецептов
  2. Rails Recipes
    1. www.ozon.ru/context/detail/id/3632386
    2. Год выпуска: 2008
    3. Версия Ruby:
    4. Версия Rails: 1.1

  1. Ruby on Rails
    1. www.ozon.ru/context/detail/id/8569023/
    2. Год выпуска: 2012
    3. Версия Ruby:
    4. Версия Rails:

  1. Программирование на языке RUBY
    1. Год выпуска: 2007
    2. Версия Ruby:
    3. Версия Rails:

  1. Ruby Developers Guide
    1. www.ozon.ru/context/detail/id/5367625/
    2. Год выпуска: 2010
    3. Версия Ruby:
    4. Версия Rails:

  1. Ruby Pocket Reference
    1. www.ozon.ru/context/detail/id/6086019/
    2. Год выпуска: 2007
    3. Версия Ruby:
    4. Версия Rails:

английские версии тоже надо будет составить в каталог
Читать дальше