Сообщество - Web-технологии

Web-технологии

534 поста 5 786 подписчиков

Популярные теги в сообществе:

78

Научу программировать #1 Системы контроля версий. Git

Глава 1. Системы контроля версий.

1.1 Что это такое?

1.2 Накуа надо, и так все работает

1.3 Как работает внутри

1.4 А как работать

1.5 Работа в команде

1.6 Домашка


1.1 Что такое системы контроля версий?

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



Вообще системы контроля версий 2-х типов:

a) Централизованные

б) Распределенные.


Централизованные.


Давайте поговорим о том, в чем разница.

В централизованных системах весь код хранит центральный сервер (бла-бла-бла). Доступ имеют все разработчики ПО. Минусы такого подхода, что у разработчика нет своего репозитория, а если сервак сломается, упадет, сгороит (нужное подчеркнуть). То ни у кого не останется полной рабочей версии ПО. Обмен происходит также, ка ки децентрализовванных.


В настоящее время уже не особо популярны, поэтому подробно останавливаться не будем, дабы не забивать голову. Кому интересно может погуглить инфы много, например: SVN

Децентрализованные

Вот тут уже гораздо интересней - остановимся подробней во второй части. Пока краткое описание, как работает.

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


Коротко рассмотрели, давайте подробней теперь на децентральзованных.

1.2 Накуа надо и как работает


Всем знакома ситуация:

----------------------------

Папки конечно могут называться по разному. Например: "правил дизайн" и т.д.

В папке "Изменения Васи" поменялся файл index.php и т.д.

можно решить таким способом данную проблему:

Вася пишет исправлял файл

...

...

и т.д.


Петя пишет исправлял файл

...

...

и т.д.


Так вот, представьте что у Вас работает над проектом так человек 20-ть, как быстро показать заказчику проект со всеми изменениями?


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


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


Что будем делать?

Если честно я хз, как решать подобное, но срок релиза отложился до решения проблемы.

По головке не погладят точно.


Вот тут и приходит на помощь наш репозиторий.

Буду рассматривать git, материалы приведенные мной это книга по git

link to book:

https://git-scm.com/book/ru/v1/

и так поехали.

Я не буду рассматривать установку на свой ПК сервера git


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

И так мы уже знаем, что наш git - это СКВ.

Как же он устроен и почему на сегодня он лидер в данной области?


Неужели весь код хранится на сервере, каждый файлик.


Это и так и не так.

Во первых все изменения происходят у Вас локально. Т.е. сервер не знает, что вы там наделали. Инфа приходит есму после, того как Вы ее туда отправили.


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


Получается вот такая картина:

Давайте рассмотрим подробнее что тут отображено:


Version - история изменений (коммитов)

A, B, C - файлы.


Наверное у Вас возникли вопросы, че за **но одни пунктиром, другие нет.


Так в этом и заключается версионность. Сам git не сохраняет полный файл к себе каждый раз, когда вы сохраняете состояние. Он сохраняет только изменения, измененных файлов. Если файл не менялся, то будет просто (условно) сказано (фактически ссылка на файл), файл без изменений.


Получается, что мы можем видеть что конкретно в какой строке поменялось в файле.

Удалилось или добавилось. При этом достаточно компактно.


На сим давайте закончим. Основа задана, далее по линку. А мы поедем дальше.

Самое важное.

Состояния файлов в гит. Это действительно важно, без этого не понять как работает система контроля версий.


и так, есть три состояния:

а) подготовленный - будет включен в репозиторий при commit

б) измененный - изменили файл

в) зафиксированный - зафиксировали, значит отправили с локальный репозиторий (помните где он да?)


Как видно у нас есть файл Petya.txt. Git видит его и сообщает нам о том, что данный файл не добавлен у нас в отслеживание изменений. сейчас у файла нет ни одного из трех состояний.


Их называют не отслеживаемые файлы. Ну само вытекает как бы из этого.

Теперь добавим файл в отслеживание.

(Команды пока я опускаю, мы к ним еще придем.)

Теперь у нас файл принял состояние №1 - подготовленный, т.е. когда мы сохраним данные локально в репозиторий, он будет включен в продукт для изменений. При этом изменения уже начали отслеживаться.

Теперь файл зафиксировали в нашем локальном репозитории. Состояние №3, при отправке на сервер от будет отправлен.


А теперь давайте сделаем состояние №2. Напишем внутри файла строку:

Petya the Best. Как видно на картинке ниже git отметил наш файл как измененный

Фухххх.......  Ну что же. Передохните пол часика, пусть материал уляжется. И продолжим. Статья получается огромной.

----------------------------------------------------------------------------------------------


Отдохнули, налили чай. Едем дальше.


И так, что надо сделать, чтобы начать работу.


Далее и на протяжении почти всех постов я буду использовать git для работы, пожалуйста отнеситесь серьезно к этому посту.


Для начала давайте поставим необходимые программы для работы.


Linux: ссылка на мануал по установке
Windows: http://msysgit.github.com/


Для тех кто использует Windows, разработчики git написали:

"Пожалуйста, используйте Git только из командой оболочки, входящей в состав msysGit, потому что так вы сможете запускать сложные команды, приведённые в примерах в настоящей книге. Командная оболочка Windows использует иной синтаксис, из-за чего примеры в ней могут работать некорректно."

После того, как установили приложение приступим уже к практической части.

Когда учили автора статьи использовать технологии командной разработки у нас было 2 дня теории и 4 дня практики, нам дали целый сервер на 20-ть человек и мы делали с ним все что хотели в рамках заданий. Именно поэтому я стараюсь сделать упор именно на практически часть в рамках всего курса. Ну если можно так сказать (:

Фактически у нас есть два способа создать репозиторий. Рассмотрим.


1. Склонировать готовый, (допустим на работе уже давно создано)

2. Создать новый локально.


И так способ 1-й.

Идем на bitbucket.org (github и др.)

регистрируемся, там есть кнопка создать репозиторий, (останавливаться не буду, в сети полно материалов как это сделать).


на ПК создаем каталог в котором будет находится копия нашего ПО, склонированного с сервера. Пишем команду:


git clone https://bitbucket.org/bla-bla-lba (в созданном репозитории на bitbucket уже есть ссылка на проект).


Мы должны в нашей папке увидеть проект, название папки = название проекта.

Жмем создать. Все наш репозиторий на bitbucket создан.

Можем приступать к работе. Внизу на странице у нас две ссылки:

У меня уже есть проект
Я начинаю полностью с нуля

Сейчас мы выберем, я начинаю проект с нуля:

git clone https://nibbler-ws@bitbucket.org/nibbler-ws/testing-repository.git

получаем ссылку на клонирование нашего проекта к себе на ПК.


Я советовал бы всем кто начинает программировать или кто уже умеет, пользоваться консолью.

Теперь открываем консоль и понеслась.

1. Выбираем папку куда будем клонировать наш пустой (пока) репозиторий.

Собственно моя папка куда мы будем производить сие действие.

Оп, наш репозиторий готов. Теперь у нас есть два репозитория, один на нашем сервер, второй на нашем ПК.


И так репозиторий готов, приступим к работе с файлами. Правда для начала давайте пробежимся коротко по GUI приложениям для git:

GitKraken - на мой взгляд просто красивый :) Эта сволоч платная, но красивая.

Есть и free-план

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

Ладно передохнули, начнем. Создаем файл в нашей папке Petya.txt

touch и прочие мной используемые команды ищите пожалуйста в интернете, они просты, а Вы сразу подучите консоль.

и так мы сделали клон репозитория ранее, перешли в папку, создали файл Petya.txt и попросили git показать статус (назовем это так). В данном случае git говорит нам, что видит наш файл, но он его не отслеживает. Что это значит, а это значит что ничего, что мы там напишем не попадет на наш сервер. Давайте попробуем зафиксировать наши изменения.

Нам сказали, что парень какого? У тебя нихрена не добавлено, давай работай. И показал, что есть файлы которые просто не отслеживает. Снова :) Мы всегда будем их видеть.


Ну давайте скажем следить ему за файлом.

Странно, но нам ничего не сказали. Конечно зачем :) мы уже просто и так добавили файл

Но если сейчас запросить статус увидим, такую картину:

Ага мы получили искомое состояние, файл отслеживается. Отлично. Теперь хочу внести ясность.

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


А: ( Строка ХАХАХ ) фиксируем изменения | ( Строка ХАХАХ ) -> ( Строка ХАХАХ2 ) -> ( Строка ХАХАХ123 ) -> ( Строка ХАХАХ Кхе-Кхе ) фиксируем изменения.

В конечном итоге у нас будут в репозитории файл в двух состояний:

А: ( Строка ХАХАХ ) -> ( Строка ХАХАХ Кхе-Кхе ).

Надеюсь это понятно. Едем дальше. Сделаем первый коммит теперь (фиксация изменений).

нам сообщили, что наш файл зафиксирован. 1 файл изменен, строк добавилось 0, удалено 0.

и хэш. Клево правда :)

Посмотрим лог (история фиксаций):

Отлично, давайте разберем, что у нас получилось:

commit - хэш коммита, для чего он буду рассказывать позже.

автор - собственно кто создал коммит.

Дата

И список файлов, которые были изменены.

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


Для этого делаем git push.

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


Читая Ваши комментарии и просматривая ссылки наткнулся на такой комментарий от пикабушника.

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

Я вот даже не знаю, просить как-то неудобно Вас. А люди мучаются :(


ПЫ.СЫ. вторая часть тоже готова уже, просто все не влезло. Скоро надеюсь смогу публиковать двумя частями. Завтра тогда домашка блин.

Показать полностью 21

Рабочая мотивация Разработчиков на Java

Привет разработчикам на Java!


Мне задали провести опрос среди знакомых разработчиков, причем "не мучая людей душными тестами". Учитывая, что знакомых разработчиков у меня всего двое, один junior, а второй "пока не решил", я решил попросить помощи на Пикабу - здесь же есть все, от новорожденных новичков до могущественных джавовских колдунов, среди которых не стоит наживать врагов!=) Вдруг кому-то из них будет интересно высказаться на счет работы и своих пожеланий?


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

Если вдруг на каждый вопрос придется несколько пунктов - это будет отлично!


0.Ваша должность и сколько вы лет в отрасли;

1.Что для вас самое важное в профессии? Без какой составляющей своей работы вы бы решили, что для вас "это уже не то"?

2.Вот прямо на текущем рабочем месте что конкретно вам очень нравится и вы ни за что не хотели бы это менять?

3.На нём же что конкретно вас бесит и что вам хотелось бы изменить. Другими словами, что мешает вам чувствовать себя счастливым на работе;

4.(ну не могу я без хоть чуточки методик) Выберите и расставьте по значимости 5 самых важных для вас аспектов работы (проще цитировать коммент и просто расставить цифры):

- деньги

- быт и удобства

- взаимоотношения на работе

- достижения результата и признание личных заслуг

- власть и влиятельность

- саморазвитие в процессе работы

- полезность вашей работы для общества

5.Назовите три конкретных вещи\обстоятельства\аспекта, ради которых вы бы хоть сейчас приняли новое предложение о работе и оставили бы старую.


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

Заранее огромное спасибо!!!


PS И воспринимайте каждый вопрос, как маленького пушистого цыпленка. Если вы не ответите - ЦЫПЛЕНОК УМРЕТ!!! (с) Суперинтендант Чалмерс =)))

Рабочая мотивация Разработчиков на Java
Показать полностью 1
1070

Нейронная сеть, которая верстает сайты по картинке1

Прошёл почти год с того момента, как на GitHub опубликовали алгоритм pix2code. И вот ребята из FloydHub на его основе создали нейронную сеть для вёрстки страниц, которую уже
можно запустить самому.

Работа алгоритма делится на 3 этапа:
1. Алгоритм получает JPEG-изображение дизайна страницы.

2. Алгоритм конвертирует элементы в HTML- и CSS-код.

3. Полученный результат

Чтобы получить такой результат, разработчики скармливали алгоритму скриншоты и присваивали определённые HTML-теги, в итоге получился датасет, с помощью которого можно генерировать шаблонные сайты. Ниже будут примеры.


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

Примеры:
- 250 циклов работы алгоритма;

- 350 циклов работы алгоритма

- 450 циклов работы алгоритма;

- 550 циклов работы алгоритма.


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

Более техническое описание проекта доступно по ссылке, а ноутбук для запуска в Jupyter лежит тут.

Взято отсюда.

Показать полностью 2
0

У меня встал вопрос

Пару дней назад, на одном анонимном форуме увидел тему с названием "В чем разница между Frontend и Web - разработчиками?". Около 500 сообщений и ни в одном нет ответа. Внимание, вопрос: кто в черном ящике? так в чем разница? Включая используемые инструменты и конечный результат. Пару комментариев для минусов прилепил.

Как люди (не)учатся программировать

По мотивам https://pikabu.ru/story/programmirovanie_dlya_studentov_chas...
Студент первокурсник пытается срубить денег на канале в телеге, истекает слюнями на EPAM(sic!), и рассказывает сказки.

Хотите войти в айти через постель программирование? Держите:

1. Английский. Как минимум B1. Лучше B2. Нужно как минимум понимать речь, и что в книге написано.

2. Идем на coursera, edx и прочее. Выбираем курс для новичков по выбранному языку. Как минимум, поймете что для чего, нравится ли язык, идет/не идет, может стоит попробовать что-то другое.


3. Попутно осваиваем системы контроля версий: git, mercurial и иже с ними.


4. На тех же курсерах и прочих ищем курсы по алгоритмам и структурам данных. Проходим и выполняем задания на вашем ЯП. Это даст хоть какую-то минимальную базу, и в языке потренируетесь.


5. Дальше смотрим курс посложнее, либо более узко специализированный. Web, big data, AI, DevOps, и т.д.


5.а. Тестирование. Как минимум юнит-тесты под ваш язык/фреймворк


5.б. Базы данных. Хотя бы общие понятия, базовые знания SQL.


5.в. Если речь про Web разработку, то, конечно, фронтенд.


6. Для многих специализаций нужны знания Unix хотя бы на базовом уровне.


7. Ну и чтобы все это дело полирнуть, что-нибудь почитать/посмотреть по методолгиям разработки: скрамы, канбаны и т.д.


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


Будете коммитить в Open Source - +100 к карме. Многие работодатели такое любят.

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

Показать полностью
Отличная работа, все прочитано!