Архив рубрики: Учеба

Все что интересно-познавательное нахожу будет лежать тут…

Обнаружил для себя интересный блог

Обнаружил для себя интересный блог, по тематике управление проектами.

Вот он — https://psilonsk.livejournal.com/

Там много полезной информации про управление проектами вообще и как поступать в различных, конкретных ситуациях в частности.

Не хочется плагиатить, но хочется поделится материалом. С многим в этом блоге я согласен и считаю полезным, особенно мне приглянулись следующие материалы:

 

Обучение JS и разработка игры Самолётик. Шаг 2.

В подготовительной части  мы подгружали 2 JS файла:

<script type="text/javascript" src="js/three.js"></script>
<script type="text/javascript" src="js/step1.js"/></script>

Если про 1 я упоминал — это сам 3D фреймфорк, то файл «step1.js», то то что нам предстоит создать.

Преступим.

Из чего должна состоять игра самолётик? Вполне логично предположить что из самого самолетика, поля над котором он должен лететь, облаков для антуража, топливо ( в последующем мы его заменим на буквы) для полета, которое нужно собирать ну и препятствий, которые нужно облетать.

Нам нужно создать соответствующие объекты. three.js содержит «по умолчанию» ряд стандартных графических объектов, такие как шар, куб, цилиндр, пирамида и тд. — подробнее можно глянуть в описании ФВ.

Итак с объектами разобрались — но игра это не только объекты, это и «камера» от лица который мы видим «сцену» , так же это освещение и управление объектами. Для удобства создания и обновления всех объектов создадим «основной» модуль-функцию, пусть называется  «init»:

window.addEventListener('load', init, false);

function init() {
	// тут создаем сцену - камеру
	createScene();

	// тут добавляем свет, а то темно будет
	createLights();

	// тут появляются чать наших объектов, 
        // еще не все что нужно, но уже что-то
        // Сам самолетик / поверхность для полета будет море / облака
	createPlane();
	createSea();
	createSky();

	// здесь в зависимости от "контроллов",
        // мы будем менять положение наших объектов 
	// а так же генерировать изменения ландшавта
	loop();
}

 

Давайте начнем с самого простого и понятного — наших 3D объектов :

Самолетик:

 

Обучение JS и разработка игры Самолётик. Шаг 1.

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

Итак ШАГ 1.

Создаем папку «Самолетик», я это сделал на рабочем столе.

В этой папке создаем файл index.html

Делаем в нем следующий код:

<!DOCTYPE html>
<html lang="en" class="no-js">
 <head>
 <meta charset="UTF-8" />
 <title>Самолетик: Часть 1 </title>
 <link rel="stylesheet" type="text/css" href="css/styles.css" />
 <script type="text/javascript" src="js/three.js"></script>
 <script type="text/javascript" src="js/step1.js"/></script>
 </head>
 <body>
 <div class="world" id="world"></div>
 </body>
</html>

Потом внутри делаем еще 2 папки «css» и «js», и

Идем на сайт http://threejs.org/build/three.min.js и скачиваем последнюю версию самого фреймворка или скачиваем ее ОТ МЕНЯ  (версия скачана 12.07.2016), чтобы точно работало, и кидаем ее в папку «js» (имя должно быть three.js)

В папке «css» создаем файл  styles.css, со след наполнением (ОН ЖЕ,только с заготовкой для 2 части):

.world {
 position: absolute;
 width: 100%;
 height: 100%;
 overflow: hidden;
 background: -webkit-linear-gradient(#e4e0ba, #f7d9aa);
 background: linear-gradient(#e4e0ba, #f7d9aa);
}

Это наш «мир» а именно, фон.

Итак подготовка сделана. Осталось творить — ШАГ 2.

Статья для habrahabr

Решил попробовать стать полноценным жителем habrahabr.ru. Для получения заветного «ключа» нужно представить относительно полезную/интересную статью или ее перевод, или обзор по технологии — в общем что-то связанное с IT и не слишком «замыленное» на Habre.

Так как сейчас начал изучать JavaScript  в виду его активного роста, простоты изучения и увеличения возможностей за счет различный фреймворков, для создания web приложений — ориентир на SPA ( SPA в WiKi )

Кстати для начала разработки SPA сайтов и приложений кроме JS нужно еще знание HTML / HTML5 , CSS, AJAX.

После изучения базовых основ, а для этого мне очень помогла статьи на Habre, направляя на пусть истинный:

Как стать профессиональным веб-разработчиком: практическое руководство

А для «набивания руки» в JS использовал игру codecombat.com , которая вплоне дает понимания как основ программирования , так и использования JS в принципе. PS.  в CodeCombat можно выбрать не только JavaScript, но и например Phyton, для изучения — вперед дерзайте!

PS. Так же у каждого разработчика должна быть под рукой статься с Более 350 бесплатных инструментов для разработчиков так же на Habre.

По совету той же статься после основ, стал искать различные фреймворки и проекты с открытым исходным кодом. И ткак как мне всегда нравились игры нашел статью по созданию игры The Aviator — летающий самолетик который уклоняется от камней и собирает «топливо», в которой есть не только исходники, но и «пошаговое описание» как эту игру сделать:

Делаем игру «Самолетик» используя Three.js

Раз пример будет использовать Three.js, то соответственно наш путь идет на  http://threejs.org/ — где имеется полное описание для данного FW с примерами. Туду нужно заглянуть тем кто заинтересуется как работают «потрошки».

В рамках обучения лучше не просто повторить, то что уже кто-то сделал, а попробовать немного изменить и посмотреть что получиться. Сразу же возникло желание немного её упростить и переделать на «ловить» буквы и составлять из них слова — само собой расчет на аудиторию в 4-6 лет.

Ну как говориться если хочешь чему то научиться, попытайся обучить этому другого)…

Итак ШАГ 1.

 

 

 

Как получить базовые понимания основных элементов в программировании играя в игру?

Если вы хотите получить практическим путем базовое понимание что такое алгоритм в программировании, понимания циклов, а так же понятие инкапсуляции (или модульность), то для этого недавно открыл для себя отличную игру!  С удовольствием в нее поигрался сам, а теперь ее осваивает моя дочка. Называется данная игра LigthBOT. В этой игре требуется путем «написания кода» в виде добавления команд кирпичиков, создать алгоритм-программу для управления роботом.

Ligthbot1

Цель игры сделать «активными», путем их «подсвечивания», все синие квадратики.

Сайт игры с ссылками где ее можно скачать, есть бесплатная версия:

http://lightbot.com/

Игра отлично подойдет всем начинающим программистам).

«Горячие» клавиши, которые сделают вашу работу в Excel эффективнее.

Заставьте себя выучить все сочетания клавиш описанные ниже, и ваша работа в Excel станет на порядок эффективнее — очень существенно увеличится скорость работы, особенно это касается при работе с большими объемами данных.

Конечно это не все возможные сочетания, но на мой взгляд самые полезные — Вот они, распечатай и наклей на монитор.

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

Ctrl + Перемещать ячейки за «крестик»
Если попытаться переместить ячейки с зажатым Ctrl, то ячейки не только перенесутся, а копируются. Аналогично можно копировать не только ячейки, но и строки и столбцы.
Shift + Перемещать ячейки за «крестик»
Если попытаться переместить ячейки/столбцы/строки с зажатым Shift, то вы заметите, что перемещаемые ячейки не заменят ячейки на которые мы перемещаем, а «раздвинут» данные или по горизонтали или по вертикали.
Ctrl + «+»
Добавление ячеек / строк / столбцов, в зависимости от выделения — если выделена строка или столбец, то добавит соответственно строку или столбец, а если выделен диапазон, то предложит добавить через меню
Ctrl + «-»
Удаление ячеек / строк / столбцов, аналогично с «+».
Ctrl + «*»
Выделение всех смежных ячеек. Смежные, это Все ячейки которые имеют заполненными хотя бы 1 соседнюю ячейку. Выделяется прямоугольник.
Ctrl + стрелка
Перемещение курсора в конец / начало сплошного диапазона (до первой пустой ячейки или границы листа)
Ctrl + Shift + стрелка
Выделение диапазона до первой пустой ячейки. После выделения можно переместить курсор на другую ячейку и через Shift продолжать их выделять!
Ctrl + End
Правый нижний угол использованного диапазона ячеек. Не последней заполненной ячейки, а именно «Использованного» диапазона, если у вас в какой-то ячейки были значения и вы их потом удалили кнопкой Del, то курсор переместиться на «пустую» ячейку.
Ctrl + Home
Левый верхний угол использованного диапазона ячеек
Ctrl + 1
Свойства ячеек
Ctrl + PageUp
Перейти на предыдущий лист
Ctrl + PageDown
Перейти на следующий лист
Ctrl + F
Поиск значений
Ctrl + H
Замена значений
Ctrl + C
Скопировать значение / объект
Ctrl + X
Вырезать значение / объект
Ctrl + V
Вставить значение / объект

Обучение — где и как. Мои пройденные курсы с отзывами.

«Куда пойти учиться?» — это вопрос задают себе те, кто хочет быть всегда  в тонусе и  быть востребованным на рынке услуг.

В нете есть 100500 подобный статей, по лучшим бесплатным институтам онлайн и тд и  тп. Я на это не претендую, здесь только то, что «прижилось» в моей практике и что я действительно использую для работы, когда у меня возникает вопрос или желание узнать что-то новенькое.

«Бесплатно, то бишь даром« :

Habrahabr.ru — большой ресурс для профессионалов различного толка. В последнее время сильно популяризирован и новая разбивка на несколько внутренних ресурсов мне не по душе. Но он остается имхо самым большим сообществом, в котором есть не только реклама, а реальные технические материалы в том числе и обучающие. Тут люди действительно готовы делиться информацией.

cyberforum.ru — огромный форум с большим объемом информации по программированию администрированию и всему IT сопутствующему. Если вы используете какой то более менее популярный стек технологий, то все грабли на которые можно наступить участники этого форума уже наступили — крайне рекомендую использовать чужой опыт).

intuit.ru — начинал как сборник курсов для самоподготовки, а сейчас полноценный интернет университет. При желании можно получить как простой внутренний сертификат «о прослушивании/прохождении», так и бумажки посерьезнее, вроде диплома о переподготовки и повышении квалификации, так и полноценное высшее образование — за которое соответственно придется заплатить, но пройденные бесплатно курсы будут учтены. Все курсы которые входят в «платные» программы, доступные и в бесплатном варианте. Информации много, но требуется внимательно смотреть на старость курса и его отзывы . Так если для менеджмента или психологии, «фундаментальных» знаний в объеме расширенной школьной программе разница в пару лет не так страшна, то по современным ИТ технологиям ИМХО тут можно найти только основы.

«Бесплатный сыр только в мышеловке»?: если я плачу деньги за образование, то их стоит отдавать только за те знания и  итоговые «бумажки» которые ценятся работодателями, я предпочитаю specialist.ru  в нем проходил несколько курсов — организация и подача знаний мне в целом понравились. Не скажу что там мне открылись новые горизонты, но разнообразить ваше «портфолио» знаний вполне сгодиться, особенно тем кто не в силах себя заставить обучиться самостоятельно.

Под споллером скоро появится список курсов которые я прошел, с комментариями.

Мои курсы

тут будет список…

[свернуть]

 

 

 

Трудности при разработке игр.

Самое трудное для начинающего разработчика, это определиться с объемом работ который его ожидает.  Почему то все считаю что это просто).

«Оставь надежду всяк сюда входящий» — создание игры чаще всего, это не «круто» или «весело», а это работа или даже «ТРУД», к которому надо себя заставлять:

  1. Учиться — а куда же без этого. Если вы рассчитываете все делать самостоятельно, то придется мнооого учиться. Даже если вас в команде 3-4 человека, то все равно придется совмещать те же 3-4 роли).
  2. Выделять время — за 2-3 часа в неделю на что-то типа тетриса вам потребуется года полтора, если опыта мало, или полгода если он уже есть (имеется ввиду создание не «работающего прототипа», а полный цикл).
  3. Искать команду — если и тетрис можно сделать самому, то для всего остального нужно разделение труда. Как только мы видим что новый проект своими силами мы реализуем за 6-7+ месяцев нужно искать команду, обычно проекты забрасываются на этом сроке из-за «усталости».

Проект разработки можно разделить на несколько этапов — они могут и будут чаще всего идти частично параллельно, но обычно следующий этап нельзя начинать пока не наберется «критическая масса» с предыдущего и крайне не рекомендуется держать активными больше 2-х этапов — если 3, то это уже увеличение объема работ, ну а 4 — уже не «процесс», а «каша» которой и управлять нельзя и результат будет непонятный:

  1. Идея — да все банально, без создания воздушного замка в голове все последующие действия будут напоминать подергивание под музыку — «вроде и не месте стоим, но и танцем это не назвать». Под идеей, нет не так под ИДЕЕЙ, понимается не мысли «сделать новый варик», или «сейчас по быстрому забацаю КС». Под идей понимается вполне конкретное ТЗ, в любом виде, но оно должно быть! с описанием игры, мира, игрового процесса, фич, дизайна игры, дизайна локаций, используемых технологий, ГДЕ и КТО как вы ожидаете в эту игру будет играть — это из обязательного.
  2. Создание элементов — сначала идет кропотливая работа по созданию различных объектов, физики, скриптов, рисуются текстуры и фоны.
  3. Создание прототипа из элементов — как только элементов хватает чтобы собрать 1 демо уровень, сразу это делаем и проверяем концепцию игры, геймплей и др составляющие, на этом этапе еще как то можно повлиять на результат без сильных задержек в сроках. Но стоит помнить что это самый затратный и сложный этап — как только он выходит на финишную прямую что-то поменять будет сложно без существенных дополнительных ресурсов.
  4. Тиражирование — тут начинаем творить, у нас уже есть необходимые объекты (персонажи, элементы локаций, элементы интерфейса и тд) со всеми его возможными действиями, есть большая часть объектов, текстуры уже «натянуты» на объекты, по большей части, начинаем все ЭТО компоновать в «Сцены» ну или уровни.
  5. Тестирование — перед выходом «в люди», нужно протестировать ВСЕ что только можно, любая мелочь, которую «добавили в последний момент» может сделать игру «непроходимой» или «проходимой слишком просто», как показывает практика — попытка «выстрелить» есть только 1 — НЕЛЬЗЯ выпускать сырой продукт для общего использования!
  6. Сопровождение — а куда без него). Получаем фидбак и делаем исправления.
  7. Модернизация — Тестировать больше нечего, ключевые ошибки выловили и подчистии — проект взлетел? Если да, то отлично — самое время для реализации всего что «хотелось, но не моглось», а именно , повторяем 4-5 этапы и делаем новый контент (DLS). Добавляем новые фички и логику.  Главное на этом этапе вовремя понять что «хватит доить золотую корову»), и приступать к новым свершениям. Ну а если проект не взлетел, то порадоваться полученному опыту и с новыми силами браться за новые проекты.

Сейчас наверное многие начнут кричать про различные «гибкие» подходы, Agile или Scrum — НЕ рекомендую, если вы читаете эту статью и она вам кажется полезной, то вы в самом начале пути, а гибкий подход подразумевает достаточный опыт чтобы избегать наиболее критических его недостатков, вроде «отсутствие понимания итогового продукта» или «крупные изменения по ходу проекта». Поэтому «бейте себя по рукам» когда вам захочеться вентуться

В следующей части переходим к пункту 1 — Учиться), а именно обзор того что нужно знать, хотя бы на базовом уровне!

Как научиться SQL?

Ресурсы которые стоит почитать:
http://www.sql-tutorial.ru/ru/content.html
http://www.sql.ru/docs/sql/u_sql/index.shtml

По 2 ссылке онлайн версия книги «Понимание SQL» Мартина Грабера. Она же в FB2 формате, для прочтения офлайн:

Gruber_Ponimanie-SQL

И еще 1 очень неплохая книга для самоподготовки по SQL:

rukovodstvo_SQL

Для того чтобы суметь написать запрос и понимать как он отработает необходимо знать и понимать что означают следующие ключевые слова в синтаксисе SQL.

SELECT
INSERT
UPDATE
DELETE
FROM
GROUP BY
WHERE
HAVING
INNER JOIN
ORDER BY
UNION
DISTINCT

Нужно понимать что вариаций SQL очень много, практически в каждой БД используется своя модификация, которая часто очень сильно увеличивает возможности базового языка. Для оптимизации своего рабочего места обычно используется Excel или Access, в которых использована модификация Jet SQL. Она приближена к стандарту ANSI для SQL (общий стандарт — запросы написанные на котором должны выполняться на любой его модификации), который в книгах обычно и описывают, и позволяет использовать некоторые встроенные функции VBA.

Небольшое задание для самоподготовки. В нашем отделе используется для определения уровня знания SQL при приеме на работу новых кандидатов.

Нужно рассказать что делает запрос.
1(простая выборка) — элементарный уровень ,
2(объединение таблиц) и 3(группировки) — базовый уровень,
4(все из предыдущих, используемое совместно + параметры) в дополнении к описанию нужно исправить 4 умышленные ошибки — расширенный уровень.

1)
select * from vw_income_docs as v where v.tpdprt=706 and v.id > 24485911073 order by v.id

2)
select t1.e_collection, t1.e_tma_category, t1.e_tma_tm, t1.e_tma_ware_subgroup, k.code_model,t1.moniker from
(select t.e_collection, t.e_tma_category, t.e_tma_tm, t.e_tma_ware_subgroup, t.id_mmodel,t.moniker from VW_WARE as t
where t.moniker like «CMT703T0*») as t1 inner join vx_model as k on k.id_model=t1.id_mmodel

3)
select count(t1.FirstQ) as kolvoM from (SELECT First(QuotaAW1213.Quota) AS [FirstQ]
FROM QuotaAW1213
GROUP BY QuotaAW1213.ShopID
HAVING (((First(QuotaAW1213.Quota))=»A1″))) as t1

4)
PARAMETERS dateBegin DateTime, tm Text ( 255 ), TGroup Text ( 255 ), Divs Text ( 255 ) ;
SELECT t2.model, t4.TM, t2.name, t2.TPGroup, t2.price, t3.Nshop, t3.upa, t1.date, t1.type, t1.pf, t1.plan
FROM ((
select ph, [date], ‘продажи ОЦ’, ‘факт’, RSumm from tren_prod where [date] between [dateBegin] and [dateEnd] and [Division]=[Divs]
union all
select ph, [date], ‘продажи РРЦ’ as type, ‘план’ as pf, plan*price from tren_plan_zakaz_union where [date] between [dateBegin] and [dateEnd] and [Division]=[Divs]
union all
select ph, [date], ‘продажи ОЦ’ as type, ‘план’ as pf, plan*price*(1-discount) from tren_plan_zakaz_union where [date] between [dateBegin] and [dateEnd] and [Division]=[Divs]
) AS t1
INNER JOIN (SELECT max(Nshop_tren.Nshop) AS Nshop, max(Nshop_tren.pres) FROM Nshop_tren WHERE Division=RD GROUP BY ph) AS t3 ON t1.ph = t3.ph) INNER JOIN tmp_art AS t2 ON t1.ph = t2.PH
WHERE (t2.RD=TRUE OR t2.DD=true) AND t2.TM=[tm] AND (t2.Group=[TGroup] or t2.Cat=[TGroup]);

Учебник SQL часть 2.1 — Select запросы.

Запрос с использованием Select позволяет из всего списка записей получить только  те которые удовлетворяют условиям.
Классический запрос на выборку SQL имеет конструкцию ( в скобках необязательная часть) :
SELECT  <какие столбцы нужны, через «,» в формате «таблица.имя_столбца»>  FROM <из какой таблицы>  (WHERE <условие на значение>)
или
Select t.ФИО From Сотрудники as t Where t.ФИО Like «*Иванов*»
или этот же запрос для запуска на выполнение из Access VBA, с запросом на ввод данных для поиска будет выглядеть так:
DoCmd.RunSQL «Select t.ФИО From Сотрудники as t Where t.ФИО Like «» *» & InputBox ( «Введите фамилию для поиска», «Поиск по сотрудникам», «Вводить тут») & «* «
 
 —  данный запрос выдаст все записи из таблицы сотрудники, в которых в поле ФИО встречается «Иванов», знак «*» означает что перед или после «Иванов» могут быть еще какие то символы\слова и также попадут записи со значениями вроде «Иванова Наталья» или «Саломонов-Иванов Роман»