Ответы пользователя по тегу Программирование
  • Как проверить баланс сим-карты МТС на PHP?

    copist
    @copist
    Empower people to give
    У них есть Личный кабинет и мобильное приложение. Там доступен баланс.

    А. Решение через "Личный кабинет"
    1. имитировать логин в личный кабинет с помощью curl с сохранением кук и прочей мишуры
    2. имитировать запрос в личный кабинет на страницу баланса с помощью curl
    скорее всего эта страница содержит баланс
    https://login.mts.ru/profile/header?ref=https%3A//ihelper.sib.mts.ru/selfcare/welcome.aspx&scheme=https&style=2015v2&updat&updat&updat

    3. парсить HTMl баланс через XML или регулярку
    https://monosnap.com/file/DLyZ0XcQfjQykKLxS4fVkJWP...

    Б. Решение через мобильное приложение
    1. Снифить трафик между андроидом и сервером через прокси
    2. Имитировать такие же пакеты
    3. В итоге получить пакет, в котором есть баланс
    Ответ написан
    1 комментарий
  • Исходники каких PHP-проектов лучше поизучать для примера отличного PHP-кода?

    copist
    @copist
    Empower people to give
    Проголосую за Yii (первый или второй) и Zend Framework 2. Александр Макаров только не надо про срезание углов :) Laravel нигде не срезал, все паттерны реализовал, очень гибкий. За это его обхожу стороной, огородами. Для начала надо что-то попроще.

    В Yii/Zend всё можно раскопать (на тостере пример про компоненты, и роутинг). Не очень много кода, в большинстве случаев не сложные реализации классических паттернов проектирования, довольно простая навигация по классам и разбор стека ошибок.

    Дополнение к ответу:
    Хотелось бы увидеть примеры отличного кода в работе реальных проектов. Изучение исходников Yii2 и Laravel многое дали, но не все.

    Не заметил сразу.

    А что не дали эти фреймворки?
    Я не слишком шокирую, если скажу, что в реальных проектах код не очень отличный? Высокопроизводительные нагруженные веб-проекты стараются обходить стороной сложные шаблоны проектирования, потому что всякие там поздние связывания, декораторы, рефлексии и прочая ерунда жрёт ресурсы, которых постоянно не хватает. Вместо красивого класса-декоратора просто вызывают метод класса, вместо DI напрямую вызывают классы. Классные проекты отличаются классностью для пользователя, делают полезные штуки, все такие веб-два-нольные, материал-дизайные, юзер-френдные. А внутри там ......... ааааа! Каждый раз, когда в классный проект решают внести ещё одну классную штуку, то один, то другой программист говорит: "там надо переписывать, лучше заново". Чем старше проект, тем чаще звучат слова "говнокод", "костыли" и "рефакторинг".

    В общем, если Yii и Symphony и шаблоны проектирования уже пройденный этап, то нужны другие книги :)
    Ответ написан
    1 комментарий
  • Что это была за статья на habrahabr о том, чем лучшие программисты отличаются от остальных?

    copist
    @copist
    Empower people to give
    Нашёл? Год прошёл уже :)

    Может быть не статья, а фрагмент книги?

    Вот в этой куча историй про программистов и технарей
    97 вещей, которые должен знать каждый программист
    97 Things Every Programmer Should Know
    copist.ru/books/97things-dev
    Ответ написан
    Комментировать
  • Поможете наставить на верный путь начинающего программиста?

    copist
    @copist
    Empower people to give
    • прежде чем писать, надо читать
    • прежде чем читать «Чистый код», надо научиться писать грязный неуклюжий код
    • прежде чем правильно проектировать большие программные системы, надо неправильно спроектировать свою маленькую программу
    Read more
    Ответ написан
    Комментировать
  • Нужно ли тратить кучу времени на задачу, которую знаешь как можно решить, но не до конца получается самому реализовать решение?

    copist
    @copist
    Empower people to give
    Есть негласная рекомендация по использованию чужого кода, найденного в интернет: нужно посмотреть решение, понять его, заглянуть в мануалы, уточнить неясные места у автора ответа, закрыть и повторить решение по памяти.

    Копипаст - это зло. Иначе когда-нибудь нарвёшься на ```rm -rf /``` с 100 плюсами и выбранный как решение и получишь попоболь.

    Более продуктивным считаю отдавать свой рабочий или нерабочий код на ревью коллегам. Тебе укажут на ошибки, дадут ссылки на документацию, может быть даже поправят.
    Ответ написан
    1 комментарий
  • Где проектировать структуру сайта?

    copist
    @copist
    Empower people to give
    gliffy.com Online Diagram Software and Flowchart Software
    Ответ написан
    Комментировать
  • Сидячий образ жизни кодера на самом деле ухудшает здоровье?

    copist
    @copist
    Empower people to give
    Вес потихоньку набирается, потому что сладкое обожаю. Спасибо Дмитрий Макаров за совет с кашами, но какие именно?
    Если совсем не шевелиться, то из-за застойных процессов нарушается кровообращение и как следствие плохо варит котелок. А так же боли в спине и шее. Ленивый кишечник. Дискомфорт в ногах.

    Бегать на улице не в кайф. Велика нет. Лыжи редко и вообще только зимой. Вот моё решение:
    PSM-Od3RUCE.jpg
    Пробежка 30-40 минут + гимнастика на растяжения + гантели/пресс/подтягивания + прохладный душ. В лучшем случае управляюсь за час.
    Голова работает отлично. Сплю 6 часов в сутки, не устаю. Кстати, режим сна 5 часов + 4 * 15 минут днём.

    Раз в квартал нанимаю массажистку для спины, плечей и шеи. 10 сеансов.

    На мониторе на стене смотрю фильмы или сериалы во время пробежки. Ещё там можно читать книги, но я предпочитаю читать бумажные и делать пометки на полях.

    Плавно мигающее световолокно перед глазами позволяет расслабить зрение. На столе лампа 2*18Wt очень яркая. Под потолоком 4*20Wt 4200K дневной свет.

    Два очистителя воздуха с ионизаторами. Один чистит внутренний воздух ультрафиолетом. Второй, приточный, чистит уличный воздух. Кондиционера нет.

    Играю (очень-очень редко, по разным причинам) в XBox Kinect. Специально играю только в кинектовские игры, подвижные. "Звёздные войны" очень разминают руки, а "Adventures" - ноги и спину.

    Часть времени работаю стоя. Ноут стоит на крышке террариума, а я рядом.
    Ответ написан
    6 комментариев
  • Какие методы/библиотеки/технологии использовать в web-проекте?

    copist
    @copist
    Empower people to give
    Общий ответ: вебсокеты и асинхронные сообщения через pub/sub
    В гугле искать по фразам "socket.io rabitmq" "php rabbitmq" "php websocket" "php pub/sub"

    Вариант реализации с использованием PHP
    На клиентском приложении: socket.io + javascript
    На сервере: socket.io + RabbitMQ + PHP

    Чтобы следить за игровым процессом:
    Скрипт PHP будет посылать сообщения в очередь на RabbitMQ
    socket.io будет читать очередь RabbitMQ и пересылать в веб-сокеты

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

    Чтобы управлять игровым процессом
    Из клиентской части веб-приложения нужно будет отправлять команды управления через AJAX или через то же соединение веб-сокет.
    В случае "через AJAX" нужно будет создать серверное микро-приложение, которое будет принимать команды через AJAX и затем передавать в основной игровой процесс через RabbitMQ или иным способом.
    В случае "через веб-сокет" серверная сторона socket.io должна будет отрабатывать полученные команды и передавать в основной игровой процесс через RabbitMQ или иным способом.

    На сервере нужно будет периодически делать дамп состояния основного серверного игрового процесса и сохранять в какую-нибудь базу. Я бы предложил дамп хранить в формате JSON в базе NoSQL, например, Mongo, CouchDB, Redis.
    При перезапуске основного серверного игрового процесса нужно будет восстанавливать состояние из этого дампа.

    Игрокам нужно будет выполнять авторизацию. У нескольких игроков может быть один игровой мир или отдельный микро-мир на несколько пользователей или на отдельный сеанс игры (например, одна шахматная доска на двух игроков и несколько зрителей). Поэтому надо будет хранить данные о пользователях и мирах. Вот тут подойдёт SQL база, например, MySQL или PostgreSQL. Хотя и NoSQL тоже можно использовать.

    Ну как то так.
    Выглядит замысловато, а на деле реализуется очень просто.
    Ответ написан
  • На чем писать конструктор?

    copist
    @copist
    Empower people to give
    Дельный совет: посмотри как реализованы уже работающие современные конструкторы landing page
    https://www.google.ru/search?q=landing+page+online...

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

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

    Моё предположение: весь конструктор - это JS, а на сервере весь шаблон и его настройки хранятся в NoSQL базе, например Mongo.

    Всё веселье начинается когда на странице попросят вывести грид из динамических данных, например, каталог товаров. Погугли в направлении BaaS (backend as service). Это может решить вопрос с хранением данных.
    Ответ написан
    Комментировать
  • Что нужно первично выучить для джуниора по JS/Node?

    copist
    @copist
    Empower people to give
    Какие задачи нужно уметь выполнять на JS начинающему (для NodeJS разработчика надо то, что помечено "важно", включая операции над DOM)

    Для укрепления навыков backend разработки - многопользовательское приложение с сервером на Node и клиентском на JS (angular, durandal, aurelia, backbone), например, игру какую-нибудь, хотя бы шашки или морской бой.
    Ответ написан
    Комментировать
  • Как пишется программа под определенную систему?

    copist
    @copist
    Empower people to give
    Решения есть.
    Пишется общая часть с использованием библиотек (SDK). Код программы при этом один на все платформы. Почти один. А у этого SDK есть вторая часть - компилятор, которая обеспечивает исполнение программы на конкретной платформе. Свой программный код нужно либо под каждой платформой откомпилировать, либо эта вторая часть занимается конвертированием промежуточного кода (байткод) в конкретного процессора.

    Для мобильных: Обзор 7 самых популярных кроссплатформенных мобиль..., Выбираем мультиплатформенный движок для разработки... и часть 2
    И вот это ещё: www.develop-online.net/tools-and-tech/the-top-16-g...

    В гугле искать по фразам:
    кроссплатформенные игровые движки
    кроссплатформенная мобильная разработка
    cross platform engine
    Ответ написан
    Комментировать
  • Какая музыка эффективна для сопровождения работающего программера?

    copist
    @copist
    Empower people to give
    Могу только стили написать. Lounge, Trans, New Agе.
    Ответ написан
    Комментировать
  • Каким алгоритмом (функцией PHP) лучше получить хэш строки для последующего сравнения по базе данных?

    copist
    @copist
    Empower people to give
    sha1 - там коллизий меньше, вычисляется не намного дольше md5, длина 40 байт

    Активно используется в протоколе BitTorrent и Git
    Ответ написан
    Комментировать
  • Что подразумевается под маленьким, небольшим, крупным проектом на PHP?

    copist
    @copist
    Empower people to give
    Зависит от количества технологий, которыми придётся воспользоваться для его реализации.
    Я сейчас сам себе условно поставлю задания на разработку проектов 4х уровней сложности.

    Простейший сайт-визитка.
    Технологии:
    1. Дизайн: типовой, картинки со стоков или вообще нет, всего несколько страниц
    2. Реализация: HTML, CSS, может быть JS
    3. Средства разработки: очень простые, вплоть до notepad.exe
    4. Хостинг: бесплатный shared hosting
    5. Обновление: вручную, по FTP
    Интернет-магазин средней сложности
    1. Дизайн: заказной, картинки, цены и описание конкретных товаров
    2. Реализация: HTML, CSS, JS, серверный язык программирования, база данных, кэширование. Возможно, интеграция с внешними системами, например, 1С, платёжные системы или доставка. В качестве базового решения использовать готовое, типа OpenCart
    3. Многопользовательский режим: несколько редакторов, посетители сайта, покупатели
    4. Средства разработки: графический пакет, IDE, клиентское приложение для базы данных
    5. Хостинг: платный shared или virtual dedicated
    6. Обновление: вручную
    Информационный портал повышенной сложности
    1. Дизайн: заказной, штатный дизайнер, художник, фотограф
    2. Реализация: CSS/SCSS/LESS, сложный Javascript c фреймворками типа Angular, несколько серверных языков программирования, база данных с горизонтальным и вертикальным массштабированием, дублированием, распределённая файловая система, кэшированием, очереди заданий, фоновые задачи.
    3. Многопользовательский режим: любой может добавлять статьи с мульти-медиа контентом, многопользователькие чаты realtime, внутренняя система сообщений
    4. Средства разработки: графический пакет, IDE, клиентское приложение для базы данных, репозиторий кода
    5. Хостинг: virtual dedicated или dedicated + тестовый и демонстрационный сервера меньшей мощности + резервный + балансировка нагрузки
    6. Сервис поддержки пользователей, модерация статей и чатов
    7. Почтовые рассылки, подписки на отдельные темы или авторов, внутренняя система сообщений с дублированием на электронную почту
    8. Авто-тесты
    9. Обновление: автоматическое, через Chef, Capistrano или иной способ
    Запредельно сложный сервис
    1. Дизайн: уникальный, специальный, заказной, несколько штатных дизайнеров, все непрерывно работают над улучшением и разрабокой новых возможностей
    2. Реализация: Reach Client Application, передовые клиентские технологии, реализация многопользовательского онлайн 3D мира, несколько серверных языков программирования, несколько типов баз данных с горизонтальным и вертикальным масштабированием, дублированием, кэшированием, очереди заданий, фоновые задачи; части системы общаются между собой по разным протоколам и асинхронно
    3. Многопользовательский режим: международный сервис, количество пользователей просто зашкаливает, они работают круглосуточно, нет периода однозначного снижения нагрузки на сервер для технического обслуживания
    4. Специфический фукционал: пользователи могут совместно делать необычные вещи, например, конструировать и выпускать реальные автомобили онлайн
    5. Средства разработки: чего только не используешь, лишь бы разобраться в коде и документации, который состоит из множества кусков и зависимостей, на разных диалектах разных версий языков, ежедневно изменяемый сотней программистов, тестовые сервера под каждую отдельную фичу; в разработке сразу несколько фич, и они конфликтуют между собой
    6. Хостинг: облачные сервера, много-много серверов, под все части системы резервирование, свой датацентр, свой оптоволоконный канал связи
    7. Авто-тесты, мониторинг, метрики, системы оповещения о сбоях и автоматического устранения аварий
    8. Резервные источники энергии, своя электростанция
    9. Круглосуточный сервис поддержки пользователей
    10. Управление персоналом: администраторы, электрики, программисты разной специализации, менеджеры, маркетологи, аналитики, тестировщики, бухгалтерия, отдел персонала, психолог, стоматолог, поликлиника, столовая, ресторан, фитнес-зал, спорт-комплекс, автопарк
    11. Внутрисистемная виртуальная валюта, возможность взаиморасчётов, найм, покупки
    12. Холдинг: подчинённые компании различных отраслей и сфер экономики или фирм, расположенные в различных регионах, с общей информационной системой
    13. Почтовые рассылки на миллионы подписчиков
    14. Мультиплатформенность: под разные операционные системы отдельная версия программного продукта
    15. Обновление: автоматическое, с бакапами до и после, авто-восстановлением при неудачном обновлении, специфическая система обновления; у каждой версии или модуля своя логика обновления; распределённое одновременное обновление большого количества серверов


    Что из этого Гугль? Ничего. Он зашкаливает по сложности.
    Ответ написан
    1 комментарий
  • Python/Django-кидди, SQL-мартышка, Web-негр — что перспективнее (Ага, «Pre-Junior»)?

    copist
    @copist
    Empower people to give
    Мне очень понравился твой вопрос. Это лучший вопрос новичка, который я видел на Тостере, я бы дал "Приз Года", честно, без сарказма. Ты уже сделал выбор, когда начал искать место, куда пристроиться. Мне кажется, у тебя получится пробиться дальше, даже если ты сейчас *нечаянно* выберешь не то место для старта.

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

    И меняй работу (ага) регулярно, скажем так через год-два. Не через месяц-три, а именно через год-два. Чем ты будешь заниматься эти два года - частично зависит от работодателя, а больше от тебя лично. А запись "2 года честно оттрубил от рассвета до заката" помогут тебе в будущем.

    P.S. В Краснодаре удалённо работает мой коллега по компании Icons8 - ничто не мешает ему жить в краю с тёплым климатом и получать хорошую зарплату. До этого мёрз на Дальнем Востоке.

    P.P.S. Кроме твоего вопроса меня также удивило то, кто именно тебе здесь отвечает. Сотрудники (бывшие?) тех организаций что ли здесь? Никогда с таким не сталкивался.
    Ответ написан
    1 комментарий
  • Как кодируются картинки?

    copist
    @copist
    Empower people to give
    Есть такое понятие - сигнатура. Набор байтов которые встречаются только в этом типе файлов.
    У PNG тоже есть сигнатура. www.libpng.org/pub/png/spec/1.2/PNG-Structure.html

    The first eight bytes of a PNG file always contain the following (decimal) values:
    137 80 78 71 13 10 26 10


    Еще можно посмотреть исходники утилиты identify из пакета ImageMagick www.imagemagick.org/script/identify.php
    Ответ написан
    Комментировать
  • Какая структура у интернет-проектов Хабрахабр, Смартпрогресс?

    copist
    @copist
    Empower people to give
    «Дьявол в мелочах», — говорят арабы. «Бог в мелочах», — говорят христиане. Те и другие правы. Если вы не уделяете внимания деталям, за ними прячется дьявол. Если вы отдаете им должное, в них являет себя Бог.

    С разработчиками обоих сервисов можно связаться и спросить напрямую :) И пообщаться с их тараканами.

    Они могут начать с любой из перечисленных ниже тем
    1. Как проект появился: актуальность, востребованность, ориентированность на пользователя, удовлетворение потребностей, удобство пользования и как следствие идея и дизайн
    2. Как ведётся разработка: совместная разработка, системы контроля версий, автоматическое тестирование, автоматическое обновление
    3. Как они привлекали пользователей: SEO, реклама, вовлечение, удержание
    4. Как они росли: ориентация на рост, масштабирование, резервирование, кэширование, оптимизация
    5. Как они общаются с пользователями: обратная связь, поддержка пользователей, техническая поддержка
    5. Как они зарабатывают: платные услуги, привлечение и удержание клиентов, коммерческий эффект, эксперименты с пользователями
    6. Как они управляют проектом: перспективы, задачи, планирование работ, риски
    Это всё разные аспекты, но и это ещё не всё.
    Ответ написан
    4 комментария
  • Необходимо ли изучение программирования для грамотного инвестирования?

    copist
    @copist
    Empower people to give
    Нужно не само умение программировать, а эрудиция в области интернет-технологий.
    Либо изучаете сами, либо нанимаете специалиста по информационным технологиям.

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

    А потом уже фокус перемещается на разработку
    - что за язык у существующего решения, если его можно доработать?
    - что за язык у аналога и почему выбран именно этот язык?
    - кто будет дорабатывать или писать своё решение?
    - на каком языке писать своё решение ?
    и другие технические детали
    Ответ написан
    Комментировать