• Docker как локальный web-сервер (замена Open Server, Xampp и т.д.)?

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

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

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

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

    На счёт того, как конкретно развернуть на докере ламп или что-то подобное, сперва прочтите Getting started на оф. сайте докера, затем гляньте на докхабе образы для веба, там их несколько и каждый описывает инетерсные подходы.

    Удачи, надеюсь мой комментарий был Вам полезен.
    Ответ написан
    11 комментариев
  • Для чего нужен Docker?

    @viiy
    Linux сисадмин \ DevOps
    Представьте что нет никакой ложки докера.

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

    2) У вас есть физическая машина + на ней виртуалки. Вы выделяете под каждую задачу свою виртуалку, там сидят отдельные пользователи, вы навели какой то порядок. Появляется задача - пользователи хотят php 6, а его нет, хотят python3, а его нет, хотят Mongo, а она старой версии. Вы обновляете репозитарии, качаете новые пакеты, ставите, часть пользователей довольны, часть нет - им нужна старая версия какая была. Упс!

    3) Одна физическая машина + еще больше виртуальных машин. Вы разделили всех пользователей так, чтобы никто не дрался за версии софта, если нужен php6 - иди на эту машину, нужен php5 - вот на эту. Все счастливы, но появляются разработчики, которые говорят буквально так - "а у меня на рабочей машине все работает, я перенес все как было на виртуалку, а у меня появляется ошибка missing library libXXX.so.X". И вы понимаете что вам остается только создать полную копию машины разработчика, чтобы софт поехал на этой виртуалке без ошибок... И тут появляется Docker! :)

    4) Docker решает именно эту проблему. Вам не нужно заботится о софте который установлен на сервере/виртуалке. Вы просто берете и переносите софт со всеми "кишками" на другой сервер и он просто работает. Работает за счет того, что все "кишки" это слои файловой системы нанизанные как бисер друг на друга. Дополнительно решается проблема свободного места, т.к слои многократно переиспользуются контейнерами, если вам нужен php + одна библиотека, а другому php + другая библиотека, вы используете (грубо говоря) слой php, а для дополнительной библиотеки делаете отдельный слой, одновременно другой человек делает над php другой слой и вы не деретесь между собой и не видите чужих библиотек. Это грубо и скорее всего ради одной библиотеки никто новый слой не делает, делают слой пожирнее.

    Все запущенные процессы Docker помещает в изолированную среду процессов, файловой системы и сетевого стека. Есть много особенностей по работе с Docker, т.к он предполагает, что в одном контейнере вы запускаете один процесс. Если вам нужно запустить целый набор демоном, тут появляются проблемы, нужно писать шелл-скрипт, который все это поднимет в контейнере. Так же есть особенности по сети, файловой системе. Для кого то Docker спасение и решение всех проблем, но я как сисадмин от этого всего не в восторге.
    Ответ написан
    15 комментариев
  • Где скачать полностью рабочий Laravel 5 в архиве?

    Laravel одним архивом cabinet.laravel.com/latest.zip

    или по отдельности:
    Larael https://github.com/laravel/laravel/releases
    а vendor к нему так https://composer.borreli.com/
    Ответ написан
    Комментировать
  • Как поставить два действия на onclick?

    delphinpro
    @delphinpro
    frontend developer
    <a href="#!" class="apply" onclick="onClickFunction">Подать заявку</a>
    <script>
      function onClickFunction(){
        try { jivo_api.open({start : 'chat'}); } catch (e) {};
        try { yaCounter55927183.reachGoal(‘HOMEGO‘); } catch (e) {};
      }
    </script>


    UPD

    amartynyuk, чувак, у тебя кавычки неправильные!!! Ну реально, в консольку смотреть надо, что там пишет....
    Ответ написан
    7 комментариев
  • Применение DIV в HTML?

    criticalsomethoughts
    @criticalsomethoughts
    UI\UX Developer, Project Manager
    Это называется tabs(табы) - вот вам пример с codepen, в нем показана техническая реализация без js. На codepen примеров куча.
    Пример - Link
    Ответ написан
    1 комментарий
  • Как получить список всех подписчиков канала в telegram?

    @szx
    Подписчиков своего канала можно взять из Telegram API (не путать с Bot API)

    Для этого нужно воспользоватся одной клиентской либой (library)
    Для меня, как любителя, самый низкий порог вхождения был telethon (написан на python)

    Как по-мне у телетона самая понятная и полная документация и страница с описанием API Telethon

    В Вашем случае Вам поможет функция get_participants

    Я писал на версии 0.19, но по документации можно сразу разобратся. Мой код для получения подписчиков
    from telethon import TelegramClient
    
    client = TelegramClient(
      "session_name",
      api_id = Ваш api_id,
      api_hash = "Ваш api_hash"
    )
    
    client.start()
    
    channel = client.get_entity("@юзернеймВашегоКанала")
    
    c = client.get_participants(channel, limit=5);
    
    x = 0
    while x < 5:
      print(c[x])
      x += 1


    Можно для начала поставить лимит на 5 чтобы проверить работает ли код, а потом и вовсе убрать, 4к подписчиков парсит около 3+ минут. Плюс к этому телеграм никогда не возвращал полный список, максимум 90%

    UPD: сейчас возвращает только 200 подписчиков :(((

    Если будете переводить на новый канал в админском меню есть пункт недавние действия(последние 2-3 дня) там можно увидеть подписавшихся/отписавшихся
    Ответ написан
    1 комментарий
  • Какие книги по HTML и CSS стоит изучать для углубления?

    sashabeep
    @sashabeep
    Дней без вопросов про Slick на тостере : 0
    Вопрос слегка outdated. Как выше уже написали, книги были лет 20 назад перечислением свойств, и в-принципе, они работали, интернет-то был с повременной оплатой. Но сейчас - незачем. Выучить базовые принципы и дальше читать статьи, и самостоятельно играться.

    А книга-вот https://developer.mozilla.org/ru/docs/Learn
    Ответ написан
    Комментировать
  • Серверная часть бота?

    @Kirill-Gorelov
    С ума с IT
    Ребята, успокойтесь!!!!!)))))
    Еще далеко вам до высоких нагрузок.
    Mysql выдержит не переживай.
    Если переживаешь, прикупи сервер немного по мощнее и все для начала. А потом уже думай, надо ли тебе несколько серверов.
    Еще не факт, что 1000 до 2000 к сек будут запросы. Ты же даже не измерил. Это гадание ка кофейной гуще.

    Делай своего бота и не переживай.
    Ответ написан
    Комментировать
  • Серверная часть бота?

    Правильно:

    Общение идет между ботом и чат-сервером (на node.js/go)
    По окончанию чата (либо по тайм-ауту), чат-сервер записывает всю инфу в базу.
    И уже какое-то бизнес-приложение (на православных symfony/django/spring) - общается в базу, вытягивает данные и как-то с ними работает.

    Ну и естественно, между этим всем идут межсервисные сообщения (эвенты), которые оповещают об изменение статуса чата.

    При росте нагрузки, сначала идет горизональное расширение чат-серверов на несколько инстансов с общей базой. Если и этого не хватает, то база шардируется. Но про нагрузку - если дорастешь до такого состояния, уже человек 50 штата будет, и это уже будет не твоя проблема.
    Ответ написан
    3 комментария
  • Стал работать по часам и обнаружил, что выходит 6 часов в день. Это нормально?

    @Simipa
    React Native developer
    Я сначала допустил подобную ошибку, когда только начинал работать на фрилансе, работал с утра до вечера как и в офисе, но на таймере было 3-4 часа. И получал я за 3-4 часа. Потом я понял, что вообще ни один человек на свете не пишет разумный код 8 часов в день, если это не рутинная задача.
    Ответ написан
    2 комментария
  • Как создать Landing Page на WordPress?

    @ren334
    Безработный бездельник
    Вот есть отличная пошаговая инструкция по созданию Landing Page на WordPress с помощью плагина Elementor.
    Ответ написан
    Комментировать
  • Как написать (простое) дополнение Firefox максимально просто, без углубления в изучении?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    Для себя наскоро написал простое расширение под FireFox, просмотрев их гайд по созданию расширений. Понадобилось установить nodejs и jpm.

    Не утверждаю, что это самый простой способ из возможных, хотя я добился ожидаемого результата быстро, и с моей точки зрения, легко.
    Ответ написан
    1 комментарий
  • Как получить заказы по web scraping и какие навыки улучшить?

    miraage
    @miraage
    Старый прогер
    Вы ищете скраппинг вакансии, но не можете сами написать такой парсер вакансий по разным биржам?
    Подозрительно.
    Ответ написан
    1 комментарий
  • Как получить заказы по web scraping и какие навыки улучшить?

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

    никогда даже не рассматривал web research работы. Стоит ли обратить внимание?

    Там заявки для интернета на английскогом языке, или на испанском, индийском и т.д. А у вас опыт в рунете.
    Также навыки рус. писателя на англ. бирже не нужны.
    Ответ написан
    Комментировать
  • Как получить заказы по web scraping и какие навыки улучшить?

    @rebovetew
    Идея повышения заработка проста:
    Задачи по скрапингу - очень часто простые типовые.
    Берёшь такую задачу - добавляешь пару строк в свое уже готовое типовое решение, и продаешь клиенту.
    Но квалификацию это не добавляет.
    Однако экономически очень приятно.
    Если ты уверен, что можешь решить задачу - твой ценник должен быть не меньше 20 долларов в час.
    При этом час ты можешь увеличивать за счет того, что будешь вылизывать своё уже готовое решение.

    Но для роста квалификации задача должна быть не типовая.
    Однако реализовывать ты будешь её крайне долго.
    Экономически это не выгодно.
    Я бы не ставил менее 15 долларов за час.
    Но тут в часу придется поработать побольше.

    Разумеется я не говорю о ручном скрапинге.
    Говорю об автоматизированном. И умении с этой автоматизацией работать.
    Ответ написан
    1 комментарий
  • Как получить заказы по web scraping и какие навыки улучшить?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    Для скраппинга есть несколько требований:
    1. скорость написания устойчивых к вёрстке правил
    2. автопроверка таких правил
    3. мультипоточность
    4. архитекура скраппера под условия хостинга
    Напишите любой свой аггрегатор или сервис-аналитику, и покажите, что Вы действительно можете создавать скраппер-системы: сразу люди к Вам и потянутся.
    Ответ написан
    2 комментария
  • Как получить заказы по web scraping и какие навыки улучшить?

    @WapGeaR
    Программист
    Я бы не доверился человеку со ставкой 8$/час, попробуйте хотя бы 15
    Ответ написан
    6 комментариев
  • Можно ли разобраться в ООП в ходе изучения YII2?

    gzhegow
    @gzhegow
    Думал, стану умнее, когда адаптируюсь, но нет
    Да как сказать Yii - это ящик с гаечными ключами. Можно ли по ящику понять - зачем ключи? Ну можно, если долго ключи использовать как пишут разработчики - то и поймешь со временем, но есть риск провалится в "делаю как сказали, почему - не знаю".

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

    Представь ассоциативный массив (ключ-значение).
    Теперь представь функцию, любую, пусть будет abs() - число по модулю.
    А теперь забрось эту функцию в свой массив на место какого-нибудь ключа, то есть у тебя как будто получится $array["abs"], где лежит сама функция.

    В чем отличие функции от других данных? Данные ты можешь записать, а можешь считать. А функцию ты еще и выполнить можешь. Таким образом когда ты ее вкинул в массив, у тебя лежит не функция там, а ее заготовка, под выполнение. И ты можешь ее вызвать но уже не как abs(), а как $arr['abs']() - что будет выглядеть одинаково (под капотом все сложнее, но пока забей, оно тебе не надо)

    А теперь представь что у тебя есть десять таких массивов $arr. И что, в каждый теперь совать функцию, которую ты только что запихнул в первый? Нет, зачем. Для этого существуют "классы" - которые описывают внешний вид будущего "массива".

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

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

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

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

    Об ООП стоит думать как средство уменьшения числа кода. Если у тебя к примеру два поставщика и два разных файла выгрузки, а действия в них одни и те же - можно прибегнуть к ООП, сделав тип "Поставщик" и описав в нем - что он умеет делать над своими "экземплярами-объектами-улучшенными_массивами" и тд.

    Прежде чем считать, что ты не сможешь без ООП тебе нужно понять, что любая вещь МОЖЕТ быть сделана без ООП. Просто количество путаницы если ты бросишь этот код и вернешься к нему через месяц и уже не помнишь что где и когда - будет больше. Классы создают некую описательную структуру того, что происходит и оттого часто в крупных проектах писать на ООП длиннее дольше и тяжелее, чем без ООП.

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

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

    Я не про то, что типа "еще рано" и тд. Я про то, что есть куча вещей в которое можно отдать время, более интересных и полезных, чем погружаться с башкой в эту муть, которая на деле кроме чувства мнимого превосходства тебе ничего не даст. Просто делай как удобно, и только когда решишь своим массивам задавать поведение - типа "при присвоении ключа в поле `name` автоматически создать поле `code` с таким-то содержимым" - вот тогда реально можешь повкуривать что тут еще можно мутить.
    Ответ написан
    23 комментария