qazaq in lille


Гео и язык канала: Россия, Русский
Категория: Блоги


меня зовут жунисали. пишу об айти, редактировании текста и языках.
для связи: @zshanabek

Связанные каналы

Гео и язык канала
Россия, Русский
Категория
Блоги
Статистика
Фильтр публикаций




Что нужно сделать, чтобы не провалить проект

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

Сделайте сперва веб версию. Если она залетела, то можно делать мобильное приложение.

- Если вы всё-таки начали делать мобильное приложение, не спешите нанимать iOS и Android разработчиков. Это две разные команды, два разных кода. Расход увеличивается. Достаточно нанять одну команду React Native разработчиков или обучить существующую.

React Native - это фреймворк, который позволяет выпустить приложение для двух платформ, написав один код.

- Рассчитать свои возможности. Не надо брать сразу 3 роли на себя: DevOps, Backend, Q&A.

- Нужно делать MVP.
Минимальный жизнеспособный продукт. Minimum viable product.

Однажды я с одногруппниками делал приложение для поиска квартир. Я выполнял роль бэкенда. В ТЗ описаны 4 модуля: пользователь, квартира, бронь, оплата. Представим, что каждый модуль содержит по 10 атрибутов. Для MVP достаточно трёх модулей: пользователь, квартира, бронь. И по 2-3 поля для каждого модуля, но не 10.

1. Модуль квартиры нуждается в таких атрибутах как: название квартиры, цена, свободно? Представим, что добавление 1 атрибута занимает 1 день. Значит этот модуль я завершу за 3 дня.

2. Модуль брони. Там достаточно трёх полей: check-in, check-out, id квартиры.

3. Модуль юзера: почта, пароль.

3+3+2=8. Через 8 дней мы видим результат. Такой минимальный продукт все равно будет работать. Это и есть MVP

Как было на самом деле. Остальные члены команды хотели увидеть все поля: количество гостей, кроватей, адрес, удобства. В итоге 10 полей в одной таблице. Соответственно я потрачу 10 дней на разработку одного модуля. И 30 дней на MVP. То есть целый месяц мы не видим MVP. В то время как с минимальным количеством полей мы видим MVP через неделю.




Нельзя вставлять ссылку на первые слайды презентации

При создании презентации проекта, нельзя вставлять ссылку в первый слайд. А то слушатели пойдут зырить проект, в то время как они должны зырить на вас.

Скриншот сделан из первого слайда реальной презентации. Помню я только открыл слайд. Через секунду все присутствующие в зале открыли телефоны и начали тестировать продукт. Пришлось 7 раз обращать их внимание на доску. Но несмотря на это, мы выиграли хакатон.


Сегодня последнее воскресенье мая, а значит надо отметить 1538-летие Киева. С днём рождения, Киев!


Отправляем сообщения, которые не побескоют собеседника

В телеграме можно отправлять сообщения, когда юзер будет онлайн.

Проблема: Представьте, что вам нужно написать кому-то ночью. Скорее всего ваш собеседник сейчас спит. Если не напишите, то забудете. Вы отправляете сообщение с надеждой, что он прочитает его утром. Но он просыпается от уведомления.

Решение: Перед отправлением сообщения долго нажимайте на иконку отправления. Появятся 3 опции. Выберите опцию "Когда будет в сети". После этого юзер получит сообщение только тогда, когда откроет приложение. #цифровойэтикет


Логотипы четырех компонентов стэка в одном ряду


MEAN стэк

Сейчас популярен MEAN стэк. Стартапы Долины активно его используют в своих проектах. Стэком называется набор инструментов, технологий, использующихся для создания ПО. От слова stack. Есть также LAMP стэк. Но сегодня поговорим про MEAN.

M - mongodb
E - express.js
A - angular
N - nodejs

Эксперты идеально скомбинировали эти технологии в один стэк. Преимущество MEAN в том, что его компоненты написаны на одном языке - JavaScript. Начнем с самого низа.

Mongo - эта нереляционная база данных. Он хранит данные проекта. Нереляционная означает, что внутри нее данные не связаны (no relation). В SQL есть связи между данными поэтому он называется реляционным. Особенностью MongoDB является то, что данные сохраняются в виде JSON документов. Он идеально подходит для MEAN, потому JSON - это стандарт хранения данных в JS.

NodeJS создан для разработки бэкенда. Мы привыкли думать, что JS работает только внутри браузера. Но с появлением NodeJS игра поменялась. Он уже замещает Python и php. На NodeJS создают внутреннюю часть сайта - бэкенд. Его логику, то что не видит пользователь. Задача ноды: брать данные с Mongo, затем отправлять их к клиенту (браузер, Angular). Обмен данными происходит в виде JSON.

Express - это фреймворк для nodejs. Он работает с роутами. Представьте, юзер вводит ссылку. Тут начинается запрос на сервер. Express ловит этот запрос от клиента с помощью роутов.

Angular - фронтенд фреймворк. Он нужен для написания внешней оболочки сайта: дизайн, анимация, кнопочки. Ангуляр позволяет разделить проект на компоненты. Это отдельные модули, которые не зависят друг от друга. Так удобнее. На голом JS такое не получится и это геморройно. Ангуляр разработан Гуглом и написан на Typescript. Typescript - это разновидность JavaScript, разработанная Майкрософтом.

Сделаем summary.
Mongo - база данных
Express - бэкенд фреймворк для NodeJS
Angular - фронтенд фреймворк
NodeJS - язык бэкенда

Так сложилось, что MEAN - идеальная комбинация технологий. Хотя тут можно бувку A поменять на другую технологию. Например, React или Vue. MERN, MEVN. Не получится досканально рассказать про стэк в одном посту. Люди пишут книги про MEAN.


Путь для начинающих веб-девелоперов:

- HTML & CSS. Делай статичные сайты.

- Javascript делает те сайты живыми.

- Напиши их с чистым минимальным кодом, используя Javascript фреймворки: Angular, React. Это фронтенд.

- Теперь нам нужен бэкенд. C#, Python или NodeJS.

- Обязательно нужна база данных! SQL, MongoDB.


История моего деда, который воевал на стороне французов.

Вчера была встреча Blablathé - спикинг клаба на французском языке. Темой встречи был роман "Le pommier rouge d'Almaty" (Красная яблоня Алматы). И даже сам автор Samuel Aubin был вместе с нами.

Сюжет романа выявляет забытый эпизод войны: участие советских солдат из Средней Азии во французском "Сопротивлении". Некоторым не повезло и их заставляли формироваться в немецкий легион, который состоял из представителей Средней Азии. Этот легион привел к братоубийству.

Главный герой книги Чингиз попал в плен к немцам. Потом убежал оттуда и присоединился к французам. Автор книги вчера на встрече рассказывает нам сюжет через Zoom, а я сижу и думаю: "Чувак, ты написал биографию моего деда".

Я уже писал в канале историю деда. В начале войны он тоже был в плену. Днём работал в доме богатого немца, а вечером возвращался в лагерь. Напоминает фильм "Список Шиндлера". После двух попыток он убежал из немецкого лагеря и присоединился к французским партизанам. Таким образом он был в команде генерала Шарля де Голля. Получал его прямые приказы. На войне Шанабек был ценным бойцом, потому что разговаривал на 4 языках: немецкий, итальянский, русский и французский. В основном ему поручали передать письма по разным фронтам. В группе из 3-х человек путешествовал по Европе. Переходил Альпы, чтобы доставить письмо в Италию. За время войны объехал 10 стран.

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

- Взятие в плен. Поход от Белоруссии до Германии
- Работа на кухне немецкого концлагеря
- Побег из лагеря
- Конец войны. Предложение от американцев переехать в США

#историяшанабека


Митап по iOS-разработке

CocoaHeads - это мировое сообщество разработчиков iOS приложений. И оно приехало к нам. 8 мая намечается первый митап CocoaHeads в Казахстане.

Будут три докладчика. Среди выступающих есть и мой друг Бекнар, выпускник Демиреля 2019. Сейчас он делает мобильные приложения в "Колеса, Крыша, Маркет". Ислам повествует секреты работы iOS команды "Сбербанка". Нарикби из Амстердама расскажет о Test Driven Development (TDD).

Отличная возможность для iOS-разработчиков пообщаться с единомышленниками. Не часто проводятся у вас такие тематические события. Регистрация на онлайн митап.


Забыл привести пример вопроса для прошлого поста.

Как правильно задавать вопрос в чате:
"Здравствуйте, для решения поставленной задачи я применил типовое решение (ссылка), но в результате получил (ссылка на гист). Нагуглив этот выхлоп, я обнаружил, что данную проблему решали до меня вот таким способом (ссылка на решение). Однако в моём случае это не помогло. Прошу поделиться опытом в решении этой проблемы или помочь найти способ."

#цифровойэтикет


Полезные сервисы в режиме карантина

1. covidmeasures.info - статистика с решениями по предотвращению пандемии.

Проблема: Лень искать статистику пандемии и методы ее предотвращения.

Решение: CovidMeasures показывает ситуацию с пандемией в виде графиков, таблиц и карт. Кроме этого можно узнать какие проблемы возникают из-за нее и пути их решения. Всё это для каждой страны. Данные верны и постоянно обновляются. Например, я там узнал, что в Польше трэкают людей, у которых был контакт с больными. Сайт на английском.


2. live03.edu.org.kz - платформа для дистанционного образования.

Проблема: Сервисы для видеоконференций нестабильно работают в Казахстане.

Решение: Новая платформа имеет те же фичи, что и Zoom, но имеет преимущество. Она будет работать без помех, потому что сервера расположены в Алматы.

Кто: Компания belochka.kz.

Как: Разработчики создали сервис на основе open-source проекта BigBlueButton

Оба проекта были полностью инициативами их создателей. Они сделаны вне рабочего времени за счёт разработчиков.


Решаем ошибки в командной строке через Stackoverflow

Студентов первых курсов пугают ошибки в терминале/командной строке. Когда у неопытного разработчика что-то не получается, он начинает паниковать, писать в общий чат, дергать людей. Я сам раньше так делал, но щас перестал. Надо расслабиться и следовать следующей инструкции.

1. Скопируйте линию, где говорится об ошибке. Он называется error message

2. Вставьте error message в поисковик.

3. В первом результате поиска обязательно выйдет stackoverflow.com. На русском ru.stackoverflow.com. Это сайт-помощник прогеров. Зайдите туда.

4. Внутри stackoverflow вверху будет вопрос, а пониже ответы на него. Пониже - они наши спасители. У этих людей есть опыт и делятся они им бесплатно

5. Прочитайте ответ. Сделайте так, как там сказано. Если тщательно следовать инструкции, то баг исчезнет.

В 90% случаев ваш вопрос уже кто-то задал и есть дюжина ответов на него. Но если у вас особый случай, то необходимо зарегаться на платформе и задать вопрос. Затем заполнить форму, в котором вы должны объяснить аудитории как и где происходит ошибка. Люди отвечают быстро. В среднем, я вижу готовый ответ в течение часа.

Если зарегаться, то можно добавить в избранные понравившиеся ответы и вопросы. При необходимости заново их просматривайте.

Stackoverflow является проводником к получению степени.

#manual


Учимся гуглить так, чтобы сдать любой таск по программированию

Нечаянно удалил пост и перезаливаю.

Студенты первых курсов сталкиваются с проблемой поиска информации. Эта инструкция для новичков, которые только начинают тернистый путь.

Название таска:
Write a Java program that creates multiple threads

1. Ищем в таске ключевое слово. Multiple threads - ключевые слова. Можно объединить multithreading.

2. Открываете гугл и вписываете ключевые слова: java multithreading

3. Выходит первый результат или статья. Эту статью написал энтузиаст, живущий за океаном. Прочитайте его. Если вы не поняли чтиво, то надо смотреть видосы в ютубе.

4. Советую переводить ключевое слово.

"Аха это многопоточность. Значит, мне нужно сделать много потоков в джаве."

Узнав перевод ключевого слова, вы на 20% сделали таск. Если хотите получать информацию на русском языке, то введите в поиске: многопоточность java

#manual


Как правильно отправлять код внутри чата

Если проблема с кодом, то не стоит вставлять скриншот. Собеседник, который хочет помочь не сможет скопировать код и протестировать у себя на машине. Поэтому код лучше отправить в виде текста. Код может быть длинным и коротким. Если код короткий, то напишите его внутри чата. Перед отправлением его нужно обязательно отформатировать. Телеграм сообщения поддерживают разметку текста через Markdown. Благодаря этому, можно код украсить вот так:
int number = obj.delete()
Красиво, не правда ли? Это моноширинный текст. Чтобы так сделать надо поставить по знаку грависа ` в начале и в конце текста. Если код занимает больше одной строки, то надо ставить три знака грависа ```.

Что делать, если код очень длинный?

Если код длинный (больше 10 строк), то надо отправлять гист. Gist - это обычная заметка, но с цветами для cинтаксиса кода. Создайте гист и вставьте его ссылку в сообщении. Так вы не будете засорять чат длинными сообщениями.

#цифровойэтикет


Как задать вопрос внутри чата, чтобы был высокий отклик

Перед тем как задавать вопрос надо посмотреть туториалы в Google или Stackoverflow. Но иногда гугл ата бессилен, и на помощь приходит чат со знатоками. Обычно пользователи задают такой вопрос: Кто сделал пятый таск? Есть проблема у меня.

Этот вопрос вызывает туман. Участники не узнают как и где помочь. Нет ясной картины. Половина людей не захотят вам ответить, а другая будет задавать вам не в тему вопросы.

Ваше сообщение должно содержать исследование. Как будто вы детектив и раскрываете уголовное преступление. Представьте, что вы показываете комиссару все факты и свидетельства преступления.
Что нужно делать:
- Укажите ссылки на источники, которые вы посмотрели: видео, статьи.
- Напишите название ошибки, которая выходит в терминале.
- Вставьте скриншоты.

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

#цифровойэтикет


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

1. Создайте события в гугл календаре с вашей встречей.

2. Если встреча еженедельная, то настройте его, чтобы оно повторялось каждую неделю.

3. В описании события добавьте постоянную ссылку на конференцию. За 5 минут до встречи многие люди спрашивают ссылку в чате. Не стоит так делать. Это неуважительно по отношению к коллегам или сокурсникам.

4. Скачайте мобильное приложение. Когда до ивента останется полчаса, то уведомление прилетит на ваш телефон.

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

#цифровойэтикет


Цифровой этикет или как не бесить друг друга в интернете

После столь долгого отсутствия первый пост будет о цифровом этикете. Можно сказать о накипевшем у меня. Сейчас я учусь в СДУ на удаленке. Часто переписываюсь со студентами и заметил, что цифровой этикет у нас хромает.

Что нам нельзя делать при общении с незнакомым человеком на улице? Например, не подходить к нему ближе чем на 1.5 метров. Или же без спроса занимать чью-то очередь. Те же самые правила существуют и в мессенджерах.

Как собеседник нарушает правила этикета:
- Не ищет сообщение, ссылку в чате и переспрашивает.
- Задает вопросы, не раскрывая ясной картины проблемы.
- Пишет просто привет в чате и ждет, когда вы ответите.
- Строчит +100500 сообщений вместо одной.
- Отправляет аудио, не извинившись

Если вы так делаете, то всегда можете исправиться.
- Ищите сообщение в истории переписки. Нажмите кнопку лупы. Затем введите ключевое слово для поиска. Если вы ищите чей-то номер, то напишите: вася номер. Ключевое слово тут номер, ну а вася его параметр.
- Если вы написали кучу сообщений, то отредактируйте одно сообщение. Добавьте в него текст других сообщений. И не забудьте удалить остальные сообщения.
- Как правильно начинать переписку.

Следуям этим инструкциям, вы будете делать казнет лучше. Следующие посты будут про #цифровойэтикет


Словарь

За время стажировки я открыл для себя несколько терминов и процессов разработки ПО.

1. Branch

Когда строишь проект, то его нужно поделить на ветки (branches) в git. Они помогают структурировать проект и не запутаться. Есть основная ветка: master или develop. Другие ветки будут создаваться методом почкования из основной. Каждая ветка отвечает за одну фичу или ишью.

2. Фича (feature)

Фича - это какая-либо возможность внутри проекта. Что мы можем назвать фичой? Добавление фоток юзером - это фича. Не делайте кашу. Нельзя в одну ветку пихать сразу две фичи.

3. Ишью (issue)

Во время разработки часто бывают баги. Все мы люди, все мы ошибаемся. И самый ужасный в мире человек, то есть тестировщик, открывает ишью, связанную с этим багом. Ишью открывают на таких платформах как github или gitlab. Чтобы он не остался без присмотра, тестировщик ассайнит (assign) ишью на вас. Ваши дальнейшие действия - создать за ишью отдельную ветку. В неё вы должны пушнуть код, который решит соответствующий баг. Нельзя в одном ишью решать два бага.

4. Мөрдж рекуест (mеrge request)

Представьте вы закончили разработку новой фичи, которую делали 2 месяца. Теперь немедленно открывайте мөрдж рекуест в гитхабе. Это такой процесс, когда ваш код нужно соединить с основной веткой. Например второстепенная ветка называется issue-13, а основная - develop. Чем больше вы сделаете мөрдж рекуестов, тем насыщеннее будет проект. Ну или превратится во Франкенштейна. Право слияния в основную ветку обычно лежит за сениором. Теперь остается ждать, когда он сделает ревью.

5. Ревью (review)

Ревью - это когда ты написал код, создал мөрдж рекуест, а сениор должен его проверить. Иногда он может ответить через два года. Чтобы такого не было, напишите этому слоупоку: "When you'll finish reviewing my code?"
Дергайте его. Не стесняйтесь. Так вы покажете свой профессионализм, да ещё таск быстрее закроете.

#айти

Показано 20 последних публикаций.

427

подписчиков
Статистика канала