Занятие №3 в рамках Курсов программирования Ruby on Rails.
Группа курсов «ВКонтакте»: http://vk.com/ruby_school
Организатор — Агентство интернет-маркетинга Мэйк makeagency.ru. Курсы проводятся на базе Кузбасского государственного технического университета, кафедры «Информационные и автоматизированные производственные системы».
Занятие №5 в рамках Курсов программирования Ruby on Rails.
Группа курсов «ВКонтакте»: http://vk.com/ruby_school
Организатор — Агентство интернет-маркетинга Мэйк makeagency.ru. Курсы проводятся на базе Кузбасского государственного технического университета, кафедры «Информационные и автоматизированные производственные системы».
Занятие №4 в рамках Курсов программирования Ruby on Rails.
Группа курсов «ВКонтакте»: http://vk.com/ruby_school
Организатор — Агентство интернет-маркетинга Мэйк makeagency.ru. Курсы проводятся на базе Кузбасского государственного технического университета, кафедры «Информационные и автоматизированные производственные системы».
Занятие №6 в рамках Курсов программирования Ruby on Rails.
Группа курсов «ВКонтакте»: http://vk.com/ruby_school
Организатор — Агентство интернет-маркетинга Мэйк makeagency.ru. Курсы проводятся на базе Кузбасского государственного технического университета, кафедры «Информационные и автоматизированные производственные системы».
Занятие №2 в рамках Курсов программирования Ruby on Rails. Видеозапись лекции доступна по ссылке: https://youtu.be/ZBjgeV4eQuk
Группа курсов «ВКонтакте»: http://vk.com/ruby_school
Организатор — Агентство интернет-маркетинга Мэйк makeagency.ru. Курсы проводятся на базе Кузбасского государственного технического университета, кафедры «Информационные и автоматизированные производственные системы».
Занятие №5 в рамках Курсов программирования Ruby on Rails.
Группа курсов «ВКонтакте»: http://vk.com/ruby_school
Организатор — Агентство интернет-маркетинга Мэйк makeagency.ru. Курсы проводятся на базе Кузбасского государственного технического университета, кафедры «Информационные и автоматизированные производственные системы».
Занятие №4 в рамках Курсов программирования Ruby on Rails.
Группа курсов «ВКонтакте»: http://vk.com/ruby_school
Организатор — Агентство интернет-маркетинга Мэйк makeagency.ru. Курсы проводятся на базе Кузбасского государственного технического университета, кафедры «Информационные и автоматизированные производственные системы».
Занятие №6 в рамках Курсов программирования Ruby on Rails.
Группа курсов «ВКонтакте»: http://vk.com/ruby_school
Организатор — Агентство интернет-маркетинга Мэйк makeagency.ru. Курсы проводятся на базе Кузбасского государственного технического университета, кафедры «Информационные и автоматизированные производственные системы».
Занятие №2 в рамках Курсов программирования Ruby on Rails. Видеозапись лекции доступна по ссылке: https://youtu.be/ZBjgeV4eQuk
Группа курсов «ВКонтакте»: http://vk.com/ruby_school
Организатор — Агентство интернет-маркетинга Мэйк makeagency.ru. Курсы проводятся на базе Кузбасского государственного технического университета, кафедры «Информационные и автоматизированные производственные системы».
Why should we know about Spring internals? It works! So use it and enjoy! However, as always, in order to use Spring in most efficient way, you must know, what is under the fork. Only in case you really understand its internals you will be able to use all power of Spring. You will be able to customize this framework according to challenges of your project, to achieve best performance and solve any problem without applying to Spring-support center. ;) Here are several topics about Spring internals, which will be covered during this session (with examples for each one): What is Spring impact on the performance of your application? What are the phases of Spring lifecycle? What is ApplicationContext structure? “You can’t do it with Spring!” – or maybe you can?
Примеры быстрой разработки API на масштабируемом сервере приложений Impress д...Timur Shemsedinov
Примеры кода приложений и конфигурации сервера с доступом к файлам, памяти, базам данных и параллельной асинхронной обработкой различных типов API запросов с состоянием и без состояния.
Документация на тему архитектуры языка PHP скудна и разрозненна, несмотря на то что тема интересна многим. В моем докладе я постараюсь заполнить этот пробел и рассказать о модулях PHP: как они работают, зачем и как их пишут. В процессе мы рассмотрим опыт Badoo в этой сфере на примерах двух модулей. И еще напишем очень небольшой собственный модуль.
— Что такое модули PHP, как они работают
— Как начать писать свой модуль PHP
— Скелет модуля — Функции, классы, методы
— Разбор параметров функции
— Сборка модуля
— Подгрузка модуля
— Простой пример модуля из Badoo
— Сложный пример модуля из Badoo
* Почему Angular 2 такой быстрый и как его ускорить еще сильнее?
* Как работает Change Detection механизм и как им управлять?
* Зачем нам Zone.js и Функциональное Реактивное Программирование?
* Как работать с Redux и Mobx в Angular 2 и что можно от этого выиграть?
Об этом и ряде других вещей вы узнаете из этого доклада.
Что такое REPL, как он устроен и какие крутые возможности в нём заложены. Поговорим о выполнении кода в REPL и о том как работает автокомплит в динамических языках. Ответим на вопрос что такое vm.runInContext, перехватим парочку промисов, сделаем вывод результатов действительно приятным и даже узнаем как подгрузить нужные модули и не подать виду. В заключение рассмотрим потрясающие возможности, которые даёт нам инфраструктура npm и как это всё можно использовать в работе.
Доклад ориентирован на тех, кому небезынтересен мир Node.js, но будет доступен также и более широкому кругу JS-разработчиков. Надеюсь, для кого-нибудь этот доклад станет очередной ступенькой в изучении любимого языка.
Web-программирование
Лекция #6. Введение в Django web-framework
Цикл лекций читается в Омском государственном университете им. Ф.М.Достоевского на факультете компьютерных наук.
Лектор: Яковенко Кирилл Сергеевич.
Андрей Карпов, Приватные байки от разработчиков анализатора кодаSergey Platonov
Доклад о редких нестандартных расширениях языка С++, про которые никто не знает, но которые надо поддерживать в анализаторе кода.
О магии Visual C++ с файлом stdafx.h, когда проект компилируется, хотя не должен. О том как зародился viva64 (предшественник PVS-Studio) для поиска 64-битных проблем. Как и почему исчез анализ кода, который одно время существовал в компиляторе Intel C++.
Why should we know about Spring internals? It works! So use it and enjoy! However, as always, in order to use Spring in most efficient way, you must know, what is under the fork. Only in case you really understand its internals you will be able to use all power of Spring. You will be able to customize this framework according to challenges of your project, to achieve best performance and solve any problem without applying to Spring-support center. ;) Here are several topics about Spring internals, which will be covered during this session (with examples for each one): What is Spring impact on the performance of your application? What are the phases of Spring lifecycle? What is ApplicationContext structure? “You can’t do it with Spring!” – or maybe you can?
Примеры быстрой разработки API на масштабируемом сервере приложений Impress д...Timur Shemsedinov
Примеры кода приложений и конфигурации сервера с доступом к файлам, памяти, базам данных и параллельной асинхронной обработкой различных типов API запросов с состоянием и без состояния.
Документация на тему архитектуры языка PHP скудна и разрозненна, несмотря на то что тема интересна многим. В моем докладе я постараюсь заполнить этот пробел и рассказать о модулях PHP: как они работают, зачем и как их пишут. В процессе мы рассмотрим опыт Badoo в этой сфере на примерах двух модулей. И еще напишем очень небольшой собственный модуль.
— Что такое модули PHP, как они работают
— Как начать писать свой модуль PHP
— Скелет модуля — Функции, классы, методы
— Разбор параметров функции
— Сборка модуля
— Подгрузка модуля
— Простой пример модуля из Badoo
— Сложный пример модуля из Badoo
* Почему Angular 2 такой быстрый и как его ускорить еще сильнее?
* Как работает Change Detection механизм и как им управлять?
* Зачем нам Zone.js и Функциональное Реактивное Программирование?
* Как работать с Redux и Mobx в Angular 2 и что можно от этого выиграть?
Об этом и ряде других вещей вы узнаете из этого доклада.
Что такое REPL, как он устроен и какие крутые возможности в нём заложены. Поговорим о выполнении кода в REPL и о том как работает автокомплит в динамических языках. Ответим на вопрос что такое vm.runInContext, перехватим парочку промисов, сделаем вывод результатов действительно приятным и даже узнаем как подгрузить нужные модули и не подать виду. В заключение рассмотрим потрясающие возможности, которые даёт нам инфраструктура npm и как это всё можно использовать в работе.
Доклад ориентирован на тех, кому небезынтересен мир Node.js, но будет доступен также и более широкому кругу JS-разработчиков. Надеюсь, для кого-нибудь этот доклад станет очередной ступенькой в изучении любимого языка.
Web-программирование
Лекция #6. Введение в Django web-framework
Цикл лекций читается в Омском государственном университете им. Ф.М.Достоевского на факультете компьютерных наук.
Лектор: Яковенко Кирилл Сергеевич.
Андрей Карпов, Приватные байки от разработчиков анализатора кодаSergey Platonov
Доклад о редких нестандартных расширениях языка С++, про которые никто не знает, но которые надо поддерживать в анализаторе кода.
О магии Visual C++ с файлом stdafx.h, когда проект компилируется, хотя не должен. О том как зародился viva64 (предшественник PVS-Studio) для поиска 64-битных проблем. Как и почему исчез анализ кода, который одно время существовал в компиляторе Intel C++.
UN POCO DE INFORMACIÓN DEL NUEVO DINERO DIGITAL.
LA CRIPTOMONEDA.
SERA QUE EL MUNDO CAMBIARA CON ESTE NUEVO INVENTO?
ATRÉVETE A IMAGINAR Y INVESTIGAR ASÍ SABRÁS LO QUE GANARA EL UNIVERSO CON ESTE RICO SISTEMA ECONÓMICO .
Теория языков программирования некоторые слайды к лекциямSergey Staroletov
Теория языков программирования (немного об интерпретаторах, триадах, оптимизации, парсерах и прочее)
Compilers construction some lectures of whole course, it covers some methods on interpreters, optimisations, antlr, dsl (introduction)
Краткое введение в Scala для разработчиков на других языках. Рассмотрены несколько простых программ, написанных с использованием красивых возможностей Scala.
Лекция #5. Введение в язык программирования Python 3Яковенко Кирилл
Web-программирование
Лекция #5. Введение в язык программирования Python 3
Цикл лекций читается в Омском государственном университете им. Ф.М.Достоевского на факультете компьютерных наук.
Лектор: Яковенко Кирилл Сергеевич.
Solit 2014, EcmaScript 6 in Action, Трухин Юрий solit
Юрий Трухин, Россия. Эксперт по облачным технологиям хостинговой компании InfoboxCloud. В прошлом – обладатель статуса Microsoft Most Valuable Professional. Гик, стратег, разработчик. Подробнее на trukhin.com
«Обзор InfoboxCloud для разработчиков». Development секция. Высокий уровень подготовки. Для разработчиков.
В этом докладе будет рассказано об устройстве InfoboxCloud из первых рук, о деталях внутренней реализации, о том, какую пользу несет облако для разработчиков и о будущем InfoboxCloud. Будут рассмотрены 2 кита облачных технологий: IaaS и PaaS без vendor-lock. Отличная возможность спросить обо всём, что касается PaaS/IaaS непосредственно архитектора и разработчика этих систем.
«EcmaScript 6 in Action». Development секция. Для разработчиков.
Поговорим о том, как жизнь разработчиков изменится с приходом нового стандарта.
Директор Мэйк, Андрей Титаев рассказывает что такое digital transformation, какие тренды определяют развитие бизнеса. И что нужно делать региональным компаниям чтобы быть конкурентноспособными завтра.
Автор: руководитель проектов Агентства интернет-маркетинга Мэйк Баранова Екатерина.
Темы семинара:
✅Эффективные и разрешённые способы привлечения подписчков в социальных сетях.
✅Как подготовить и оформить коммерческие сообщества "ВКонтакте" и Facebook, чтобы они продавали.
✅Как оформлять публикации в соцсетях, чтобы их замечали пользователи.
На что нужно обратить внимание представителям бизнеса, чтобы не попасть впросак. Рассказываем о самых популярных схемах мошенничества и как им противодействовать.
Занятие №8 в рамках Курсов программирования Ruby on Rails.
Группа курсов «ВКонтакте»: http://vk.com/ruby_school
Организатор — Агентство интернет-маркетинга Мэйк makeagency.ru. Курсы проводятся на базе Кузбасского государственного технического университета, кафедры «Информационные и автоматизированные производственные системы».
Занятие №7 в рамках Курсов программирования Ruby on Rails.
Группа курсов «ВКонтакте»: http://vk.com/ruby_school
Организатор — Агентство интернет-маркетинга Мэйк makeagency.ru. Курсы проводятся на базе Кузбасского государственного технического университета, кафедры «Информационные и автоматизированные производственные системы».
Автор презентации: руководитель проектов Агентства интернет-маркетинга Мэйк Баранова Екатерина.
В презентации разобраны основы работы в социальных сетях. Составлен список вопросов, на которые необходимо ответить, прежде чем начать работу в SMM:
1. Зачем компании/организации социальные сети.
2. Определение целевой аудитории.
3. Зачем .пользователям вступать в вашу группу?
Приведены основные типы контента в социальных сетях с примерами по тематике молодёжных объединений. Представлены ключевые виды работ в соц сетях: написание и оформление контента, отложенный постинг, массфоловинг.
Предложено задание на самостоятельное выполнение.
Семинар был проведен для Молодёжного парламента Кузбасса 19.11.2015 г.
Автор: руководитель проектов агентства интернет-маркетинга «Мэйк» Баранова Екатерина.
Как сделать сайт, который будет решать задачи бизнеса, для чего нужно разрабатывать персонажи и структуру будущего сайта и почему самый важный этап разработки — это не дизайн, а написание контента.
В докладе также представлены примеры целей разработки сайта медицинского центра, разобраны типичные ошибки сайтов медицинской тематики.
Представлен на конференции «Медицинский интернет-маркетинг» 29.10.2015 в г. Кемерово.
1. #3 Обзор Ruby
Обзор языка
и начало работы над своим приложением
Денис Калесников, главный программист Мэйк
make.st
2. Особенности Ruby
Интерпретируемый язык с динамической типизацией. Это значит, что для
вызова методов не обязательно задавать типы атрибутов. Все
переменные в общем равноправны. Вы сами определяете, с чем вы
работаете.
Не имеет точки входа.
Не требует компиляции, т.е. выполняется в момент запроса. Но в
следствии этого работает несколько медленнее.
Позволяет писать лаконичные выражения, за счет богатой встроенной
библиотеки.
3. Переменные в Ruby
Локальная переменная: variable_name
Переменная экземпляра класса: @variable_name
Переменная класса: @@variable_name.
Глобальная переменная: $VARIABLE_NAME.
Важно! Не рекомендуется использовать глобальные переменные, потому
что они могут быть изменены в любой точке программы.
4. Основные типы данных
String - строковый: “строка”
Integer - целые числа: 4
Float - числа с плавающей запятой: 4.5
Symbol - символ: :symbol
5. Классы, модули и методы
Определение класса начинается с ключевого слова class и названия самого
класса, которое пишется CamelCase’ом
Модули задаются как классы, только слово module используется вместо
class. В отличие от классов создать объекты на основе модуля нельзя,
модуль не может иметь подклассы, нет иерархии и наследования.
Классы и модули содержат в себе методы, которые объявляются
конструкцией def method_name … end и бывают нескольких типов: public,
private, protected
6. Наследование и примеси (mixins)
Наследование позволяет разным классам соотноситься друг с другом и
группироваться по схожим частям в структуре.
Примеси (mixins) - возможность модулей делить функциональность между
классами. При включении (include) модуля в класс, его методы также
добавляются в класс.
7. Методы в Ruby
Несколько фактов о методах:
Названия пишутся в стиле camel_case
Могут быть определены в любом
контексте.
Могут оканчиваться на ? или на !
Последнее выражение является
возвращаемым значением.
Пример:
def method_name(arg1, arg2=1, params={})
arg1 + arg2 + params[:a]
end
9. Управляющие конструкции
unless является управляющей конструкцией, обратной конструкции if.
unless
…
end
Важно! Использовать в данной конструкции else не рекомендуется, так как
блоки становятся тяжелыми для восприятия.
11. Операторы
Операторы языка достаточно стандартны. Большинство операторов руби по
факту являются вызовами соответствующих методов. Например a + b
интерпретируется как a. + (b), где метод “+” вызывается на объект, на
который ссылается переменная a с аргументом b.
Наиболее удобную таблицу прецедентности операторов для языка Ruby
можно найти здесь:
www.tutorialspoint.com/ruby/ruby_operators.htm
12. Обработка исключений
Чтобы избежать ошибок в работе приложения, часто используют обработчик
исключений. Для этого используют блок:
begin
rescue Exception => e
…
ensure
end
Если появляется исключение, то контроль передается блоку rescue и
исполняется код внутри этого блока. Код внутри ensure исполняется всегда
13. Массивы
Массив создаётся как минимум тремя способами.
1. [1, 2, 3, 4]
2. Array.new(6){ |index| index + 1 }
3. (1..6).to_a
14. Массивы. Действия с массивами
Размер массива можно получить с помощью метода size:
[1, 3, ‘ruby’, 16].size #=> 4
Сортировка выполняется с помощью методов sort или sort_by:
[1, 5, 3, 2, 16].sort #=> [1, 2, 3, 5, 16]
["собака", "была", "у", "артемия"].sort_by{ |elem| elem.size }
#=>["у", "была", "собака", "артемия"]
15. Массивы. Действия с массивами
Для того, чтобы обратить массив, достаточно использовать метод reverse:
[1, 2, 3, 4, 5].reverse #=>[5, 4, 3, 2, 1]
Группировка массивов производится с помощью метода group_by:
%w(машина волк заяц сова шрек кот ток бит).group_by{|el| el.size }
#=> {6=>["машина"], 4=>["волк", "заяц", "сова", "шрек"], 3=>["кот", "ток", "бит"]}
16. Массивы. Действия с массивами
Для удаления элемента из массива существует метод delete. Особенностью
этого метода является то, что он возвращает удаленное значение.
Пример:
array = [1, 5, 3, 2, 16, 2] #=> [1, 5, 3, 2, 16, 2]
a = 2 #=> 2
array.delete(a) #=> 2
array #=> [1, 5, 3, 16]
Если вам необходимо очистить массив от nil элементов, используйте метод
compact
17. Хэши
Хэш (hash) - коллекция пар ключ-значение. Хэш подобен массиву, за
исключением того, что индексация осуществляется через ключи (объекты
любого типа), а не через целочисленные индексы.
Hash["a", 100, "b", 200] #=> {"a"=>100, "b"=>200}
Hash[:a => 100, "b" => 200] #=> {"a"=>100, "b"=>200}
{ "a" => 100, "b" => 200 } #=> {"a"=>100, "b"=>200}
Hash[a: 100, b: 200] #=> {:a=>100, :b=>200}
{String => 'string', Integer => 'int', a: 12}
18. Хэши
Метод delete(key) удаляет пару ключ-значение из хеш, которая соответствует
ключу key.
Возвращается значение, соответствующее ключу. Если ключ не был найден,
тогда возвращается "значение по-умолчанию". Если используется
конструкция с блоком и ключ не был найден, то возвращается результат
выполнения блока block, которому передается ключ key
h = { "a" => 100, "b" => 200 } #=> {"a"=>100, "b"=>200}
h.delete("a") #=> 100
h.delete("z") #=> nil
h.delete("z") { |el| "#{el} не найден" } #=> "z не найден"
19. Хэши
HashWithIndifferentAccess
Позволяет получать значения по ключу независимо от того какой типа его
ключ - String или Symbol (символ)
Удобно использовать когда названия ключей заданы в коде символом, а хэш
приходит из запроса или текстового файла.
Важно! Не входит в стандартную библиотеку и предоставляется
фреймворком Rails
20. Блоки
Блок — это произвольный код, который можно передать любому методу в
качестве неявного последнего аргумента. Следует понимать, что при этом
блок является особой конструкцией языка и обособлен от списка явных
аргументов метода, что означает следующее:
методу можно передать только один блок;
он всегда идет в самом конце и вынесен за скобки с аргументами (если
они есть);
его можно задать при вызове любого метода, независимо от того, указаны
в определении метода аргументы или нет.
21. Блоки. Замыкание контекста
Блок имеет доступ к переменным и контексту где вызывается метод, в
который передается этот блок.
Это похоже на замыкание - прием в программировании, когда функция
захватывает переменные контекста, в котором она определена.
22. Циклы
Классические циклы for …; while …; until …; в rails-приложениях почти не
используются. Синтаксис у них стандартный.
Так же есть циклы do … while; do … until:
begin
...
end while …
Прервать цикл - вызов break
На следующую итерацию - next
23. Циклы. Часто используемые конструкции
Чтобы создать обычный цикл, исполняющийся n раз в Ruby, достаточно
использовать следующую конструкцию:
n.times do
…
end
times в Ruby заменяет код вида for(i=0;i<n;i++), но это не означает, что цикл
for отсутствует в Ruby.
24. Циклы. Часто используемые конструкции
Для того чтобы разобрать массив или коллекцию по элементам существует 2
метода - each и each_with_index. Метод each_with_index используется, когда
необходимо хранить индекс текущего цикла.
Пример:
collection.each do |collection_item|
...
end
collection.all.each_with_index do |collection_item, index|
...
end
25. Циклы. Часто используемые конструкции
В отличии от метода each, метод map возвращает массив элементов.
array.map {|item| block }
Выполняет выражение block для каждого элемента массива array. Создает и
возвращает новый массив, состоящий из значений, которые получены при
вычислении выражения block. Исходный массив при этом не изменяется
26. Циклы. Часто используемые конструкции
Метод reduce позволяет свести коллекцию значений в одно. Для каждого
значения в коллекции вызывается функция, первый аргумент которой
результат предыдущего вычисления, второй - текущий элемент коллекции.
Важно! Метод обрабатывает коллекцию слева-направо.
27. Конкатенация строк. Интерполяция
Строка создаётся при помощи ограничительных символов. Для этих целей
чаще всего используются " (программистская кавычка) и ' (машинописный
апостроф). Их смысл различен:
Строка в апострофах гарантирует, что в ней будет содержаться тот же
текст, что и в коде программы, без изменений.
Строка в кавычках будет проходить предварительное преобразование.
Будут раскрыты конструкции «вставка» и «специальный символ».
Вставка — это конструкция, которая вставляется между ограничительными
символами внутри строки. Например: "Hello, #{User.name}!"
28. Конкатенация строк. Безопасный вывод HTML
При использовании шаблонизатора erb, у вас появится возможность
выводить данные из Ruby на страницу.
Для того, чтобы безопасно вывести данные, необходимо использовать
конструкцию <%= content %>. Она выведет все данные как текст.
По умолчанию код HTML преобразуется в текст и пользователь видит
непосредственно HTML-код. Это связано с защитой от XSS-атак.
Если вы уверены в авторе HTML-содержимого и хотите, чтобы браузер
интерпретировал как HTML, вы можете использовать
<%= content.html_safe %> либо <%== content %>