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

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

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

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

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

  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 ( «Введите фамилию для поиска», «Поиск по сотрудникам», «Вводить тут») & «* «
 
 —  данный запрос выдаст все записи из таблицы сотрудники, в которых в поле ФИО встречается «Иванов», знак «*» означает что перед или после «Иванов» могут быть еще какие то символы\слова и также попадут записи со значениями вроде «Иванова Наталья» или «Саломонов-Иванов Роман»

 

Учебник SQL часть 2 — Основные типы запросов.

Рассмотрим основные запросы SQL.

SQL делает с информацией в БД, то-же что мы привыкли делать с обычной информацией например в Excel, а именно выбирать нужную, изменять ее по определенному признаку, удалять не нужную и добавлять новую. Для этих действий используются следующие основные операторы:

SELECT – выбрать строки из таблиц;
INSERT – добавить строки в таблицу;
UPDATE – изменить строки в таблице;
DELETE – удалить строки в таблице;

и sql запросы имею вид:

SELECT * FROM <имя_таблицы>;

INSERT INTO <имя_таблицы> (<столбец1>, <столбец2>, … , <столбецN>) VALUES ( ‘<значение1>’, ‘<значение2>’, … , ‘<значениеN>’ );

UPDATE <имя_таблицы> SET <столбец1> = ‘<значение1>’ , <столбец2> = ‘<значение2>’ WHERE <столбецN> = ‘<значениеN>’;

DELETE FROM <имя_таблицы> WHERE <столбец1> = ‘<значение1>’;

ВНИМАНИЕ! Запрос на удаление удалит ВСЮ запись, а не только конкретное значение столбца!

Учебник SQL часть 1 — Введение

Учебник по SQL. Часть 1.

Введение.

Что вообще такое SQL? Для многих рядовых сотрудников которых вдруг огорошили, что они теперь будут работать в какой-то СУБД и им придется вытаскивать оттуда информацию через SQL данная аббревиатура ничего не говорит, но не все так сложно как может показаться на первый взгляд. В любом обычном разговорном языке есть правила, при помощи которых создаются предложения, а SQL или Structured Query Language (язык структурированных запросов) по сути является сводом таких-же правил, при помощи которых мы сообщаем компьютеру что хотим из БД получить используя довольно простые логические конструкции. Как и обычные языки, которые имеют различные наречия и 2 человека разговаривающие на одном и том-же, вроде бы английском могут слабо понимать друг друга, язык SQL имеет несколько вариантов, основной или стандартный поддерживается комитетом стан­дартов ANSI, и соответственно называется ANSI SQL, отдельные же реализации носят собственные имена (PL-SQL, Transact-SQL и т.д.) и зачастую относятся к конкретным СУБД например PL-SQL относится к Oracle и какой не то большой и сложный запрос на этом языке может быть не понятен например Access, но за некоторыми исключениями, конструкции построенные на ANSI SQL будут понятны всем СУБД. Стандартный ANSI SQL язык состоит всего из нескольких слов, другие же реализации могут включать другие слова-функции. Мы будем рассматривать в основном Jet SQL применяемый к Access и vba, который за некоторыми функциями соответствует стандарту ANSI SQL-92.
Синтаксис Jet SQL (далее если встречается sql, имеетca ввиду именно jet sql) :
Операторы:
SELECT — запрос на выборку данных
DELETE — запрос на удаление данных
CROSTAB — запрос на суммирование данных из нескольких таблиц
ACTION — запрос на изменение информации, также возможно создание новых таблиц\полей
PARAMETR — запрос с изменяемым (задаваемым пользователем) условием
INTO — указывает название новой таблицы в простом запросе на создание таблицы на основе запросы на выборку
FROM — указывает откуда получать данные
WHERE — указывает условие на выборку данных
ORDER BY — указывает условие на сортировку данных
AS — указывает название нового поля\(имени самого запросе в сложных запросах) в запросе
DISTINCTROW
ASC[ENDING]
DESC[ENGING]
AND
OR
IS NULL

Функции:
AVG
YEAR
MONTH
DATE
NOW
DATEPART
FORMAT$
COUNT

Запуск SQL запросов из VBA для Access и Excel

sql-fun
sql-fun
В различных ситуация требуется какое либо действие сделать с БД с помощью SQL запросов, и при написании программы зачастую требуется это сделать из VBA кода. Для этого я использую различные схемы, в зависимости от сложности запроса и поставленной задачи.
, где для всех примеров myBD это объявленная наша БД, например через Dim myBD As Database и последующей Set myBD = CurrentDb , как пример для Access

 

1 — Запуск запросов через QueryDef, ИМХО — использую для ODBC:
Для первого варианта средствами Access делаем обычный запрос  с нужными нами действиями или несколько связанных между собой и запускаем его строчкой ниже. Вообще QueryDef является одним из лучших методов по запуску и выполнению (да запуск сохраненных SQl запросов через него, это далеко не все что он может) запросов в базах данных использующих драйвер ODBC.
myBD.QueryDefs(«ИМЯ_ЗАПРОСА»).Execute
или делаем непосредственный запуск запроса
myBD.QueryDefs.Execute «DELETE * FROM MyTabl»

 

2 — Запуск запросов через RecordSet, ИМХО — использую для ADO:
Этот вариант у меня прижился больше для Excel когда к БД подключаюсь через ADO драйвер, и требуется например сохранить данные в бд, через запрос (Помидорами не кидать, знаю что сам RecordSet позволяет это делать — тут просто пример как можно запустить запрос через него)
Set rs = cmd.Execute(«DELETE * FROM MyTabl», , adExecuteNoRecords)

 

3 — Непосредственный запуск запросов
ИМХО — использовать стоит в основном внутри Access и довольно редко, для мелких задач, а для всего отсльаного лучше через QueryDef:
DoCmd.RunSQL «DELETE * FROM MyTabl»
myBD.Execute «DELETE * FROM MyTabl»

Шаг 2 : Сообщаем миру что появился новый сайт!

Наш сайт появился, он еще мал и гол, и о нем никто не знает. Начнем решать эти проблемы.

Немного теории, браузерный поисковый рынок фактически поделен поделен между Google и Yandex, совместно они дают где то 90% всех поисковых запросов, на них и будем ориентироваться. Для успешного продвижения сайтов и Гугл и Яндекс предоставляют набор инструментов для webmaster -ов. Ими нужно будет научится пользоваться, мне лично больше нравятся инструменты Google поэтому пример просмотра метрики буду показывать на них. Инструкция как и в Шаге 1 будет простой  и поэтапной:

  1. Идем на Google и регистрируем аккаунт, если еще нет.
  2. После регистрируемся в сервисаx AdSense и Analytics.
  3. Заходим в Analytics на вкладку Администратор, в появившемся аккаунте нажимаем на выпадающее меню и «Создать аккаунт» и заполняем все поля. После регистрации нам должны выдать идентификатор отслеживания. Запоминаем его.
  4. Теперь переходим на вкладке Администратор, переходим в подменю «Ресурс» и дальше в «Код отслеживания». Сохраняем его , он нам понадобится дальше.
  5. Сейчас если есть регистрация в AdSense они с Analytics связываются автоматически, в противном случае полученный ранее идентификатор отслеживания нужно добавить на «Главная страница» -> «Настройка Аккаунта», там же заодно нужно добавить сайт в разрешенные для показа рекламы, а в Analytics на вкладке Администратор в подменю «Аккаунт» -> «Установление связи в AdSense» нажать «Связать аккаунты».
  6. Заходим на Yandex и регистрируем аккаунт , если еще нет.
  7. После регистрации на главной странице нажимаем на название аккаунта и в выпадающем меню нажимаем Вебмастер. Далее Ищем кнопку «Мои сайты» и рядом с ней должна быть «Добавить сайт». Проходим процедуру добавления и проверки сайта.
  8. Отлично, теперь идем в Админку нашего сайта.
  9. Переходим в подменю «Внешний вид» -> «Редактор», и там открываем «Подвал» и добавляем сохраненный ранее текст скрипта от Google перед оператором </body>. Обновляем файл (сохраняем изменения). далее открываем «Заголовок» и добавляем скрипт перед оператором </head>. Сохраняемся. Готово теперь Google будет следить за нами.
  10. Устанавливаем плагины Google XML Sitemaps и WordPress SEO и активируем их. Теперь у нас в параметрах появилась меню XML-sitemap. Пока в настройках можно ничего особо не трогать, позже разберемся. Нажимаем создать наш новый Sitemap.
  11. При регистрации хостинга нам приходила информация по подключению к нему, воспользуемся ее и в управлении файлов мы должны увидеть в папке WWW 3 новых файла robots.txt (именно так, в нижнем регистре — менять имя НЕЛЬЗЯ) , Sitemap.xml и Sitemap.xml.gz.
  12. Заходим в robots.txt и меняем его текст на тот что ниже (ВНИМАНИЕ! обязательно поменяйте название сайта!) и на этом можно закончить 2 шаг и ожидать индексации сайта роботами поисковых систем, а просматривать статистики можно в  Analytics :

User-agent: Yandex
Disallow: /cgi-bin
Disallow: /wp-admin
Disallow: /wp-includes
Disallow: /wp-content/plugins
Disallow: /wp-content/cache
Disallow: /wp-content/themes
Disallow: /wp-trackback
Disallow: /wp-feed
Disallow: /wp-comments
Disallow: */trackback
Disallow: */feed
Disallow: */comments
Host: IMYA_MOEGO_SATITA.ru

User-agent: *
Disallow: /cgi-bin
Disallow: /wp-admin
Disallow: /wp-includes
Disallow: /wp-content/plugins
Disallow: /wp-content/cache
Disallow: /wp-content/themes
Disallow: /wp-trackback
Disallow: /wp-feed
Disallow: /wp-comments
Disallow: */trackback
Disallow: */feed
Disallow: */comments

Sitemap: http://IMYA_MOEGO_SATITA.ru/sitemap.xml.gz
Sitemap: http://IMYA_MOEGO_SATITA.ru/sitemap.xml

 

Шаг 1 : Как создать сайт или как создался этот сайт за 30 мин…

Многие кто не знают как создать свой сайт, с чего нужно начать…  Но на самом деле все гораздо проще чем многие думают)…

Расскажу на примере этого сайта и хостинг провайдера hostline.ru на котором этот сайт расположен…

Сайт построен на самой популярной платформе worldpress, особенно часто ее используют для личных блогов или новостных сайтов. Скачать последнюю версию можно с официального сайта абсолютно бесплатно, то есть даром,  т.к. это свободно распространяемое ПО с открытым исходным кодом  — http://ru.wordpress.org/ или просто кликнув по СКАЧАТЬ  и получим последнюю русскую версию .

Итак наши действия по шагам :

  1. Идем на сайт http://hostline.ru и регистрируемся
  2. Выбираем свободный домен на главной странице (если купить у http://hostline.ru хостинг на год, то дадут купон на бесплатную регистрацию в зоне .RU и .РФ)
  3. Переходим на страницу заказа хостинга, и покупаем на год (чтобы была скидка в 20% и дали бесплатный купон на регистрацию), желательно указать выбранный домен (чтобы потом не потребовалось привязывать в ручную). Для покупки соответственно в личном кабинете нужно проплатить услугу.
  4. Теперь идем на главную страницу и заказываем понравившейся домен и оплачиваем купонам через личный кабинет. Ожидаем подтверждения.
  5. Заходим в личный кабинет и на вкладке Хостинг должно быть 2 записи, 1 — проплаченный хостинг и 1 — бесплатный хостинг который дали к домену при покупке. Удаляем бесплатный.
  6. После регистрации хостинга на почту придет информация о личном кабинете созданного хостинга — заходим туда и проверяем что во вкладке домены есть наш, если нет то добавляем, далее выбираем в меню управление файлами. Там в папке WWW должна появится папка с названием домена, удаляем все из нее, и вставляем скаченную версию worldpress.
  7. Заходим на наш новый сайт по вашей зарегистрированному доменному имени через браузер и видим там приветственное сообщение от Wordlpress, проходим простые шаги установки и все — добро пожаловать в ваш сайт и его админку.
  8. Через админку выбираем понравившейся нам шаблон из огромного множества. Пишем первую статью-новость и начинаем потихоньку разбираться с функционалом. Начало положено!

ФуууУФ — УРА мы такие молодцы создали свой сайт, следующая статья о сайтах будет как его теперь продвигать в поисковых системах.