• Как опубликовать игру/приложение в Ubuntu Store написанное на Golang?

    @vanyamba-electronics
    As a free/open source app, you essentially have two options:
    Ответ написан
    Комментировать
  • Как наверстать знания в javascript?

    Yertuwernat
    @Yertuwernat
    Кратко о себе: живу в России, не женат, характер
    Как вариант ты можешь работать без всех этих технологий: babel, webpack, typescript и тд и тд.

    Вообще без них!

    Но если ты хочешь работать как все в индустрии - то страдай!
    Страдание неизбежно.
    И неизбежно ты вынужден будешь работать с лентяями, дебилами, психопатами, жуликами и тд и тд.

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

    На самом деле эта возможность легко увольнять разработчиков - это и есть главная причина существования этих безумных сложных технологий: babel, webpack, typescript и тд и тд.

    И те кто вынужден работать в этих фреймворках чаще всего сами себе внушают что так и должно быть и это нормально - и рекламируют это другим...
    Это просто дурдом.
    Ответ написан
    15 комментариев
  • Как вы боретесь со слабой типизацией и зачем ее придумали?

    И самое главное: кто придумал слабую типизацию?

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

    Динамическую типизацию придумали для того, чтобы было легче писать обобщённые алгоритмы и мета-алгоритмы, в дин. языке для обобщения кода не нужны ухищрения типа дженериков (TypeScript, C# и много чего ещё) или шаблонов/макросов (C++). В ОО-языках часто доступны и другие удобства, например смена интерфейса объекта в зависимости от его состояния (т.к. решение о возможности вызова метода/свойства объект может принимать сам).

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

    Как вы пишете код на жс?

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

    Он же не должен быть напичкан parseInt() и !== undefined.

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

    Чем больше проект, тем важнее статическая типизация, это нормально. JS - это язык который популярен по техническим причинам и по стечению обстоятельств, а не потому что он этого заслуживает (имхо). Очень неглупые дяди и тёти не стали бы тратить годы своего времени и кучу денег на разработку TypeScript и Flow, если бы это было ненужно.
    Ответ написан
    1 комментарий
  • Какое направление будет более перспективно?

    @Zwerty
    Больше трёх лет работал с PHP и Zend, сейчас интересных проектов стало меньше, пришлось уходить в фронтенд. Рынок PHP-разработки держится на "трёх хромых слонах": CMS-разработка (нужно дешево и сейчас), поддержка старых проектов, ну и новые крупные и интересные проекты на Symfony/Laravel, которых становится все меньше (такие проекты, как правило, начинают на Node.js, Python или ASP.NET Core). На PHP остается ширпотреб.
    А JS сейчас это уже не просто тренд или будущее, это самое что ни на есть настоящее. Практически все веб-проекты сейчас разрабатывают с помощью JS-фреймворков (React, Angular, Ember, Polymer, Vue). JS уже и в мобильной разработке. Если раньше моб. разработчики смеялись с React Native или NativeScript, то сейчас это уже зрелая технология (React Native уж точно) и вакансий полно, это прекрасные инструменты для прототипов или несложных приложений (приложений, которые просто что-то дергают по api, а таких 90%). Даже десктопные клиенты делают с помощью JS. Помню, раньше такие монстры на Electron жрали много оперативки и были очень неповоротливые, но сейчас ситуация изменилась (использую 5 приложений на Electron, все используют не больше 120 Мб оперативки).
    Я уж молчу про серверный JS в виде Node.js, который становится все популярнее с каждым годом.
    Поэтому на вашем месте я бы двигался в сторону JavaScript.
    Ответ написан
    Комментировать
  • Есть библиотека для выбора страна/город Django?

    @techkuz
    Ответ написан
    Комментировать
  • Как сделать правильную структуру сайта на WagtailCMS?

    m1kola
    @m1kola
    Вы можете использовать страницы (наследоваться от Page) для главной страницы, для страницы категории и для страницы статьи.

    Т.е. вам нужны три модели:
    • class HomePage(Page)
    • class CategoryPage(Page)
    • class ArticlePage(Page)


    Wagtail использует древовидную структуру для страниц. Т.е. дерево страниц будет примерно таким:
    - Root
    -- Home (HomePage)
    ---- Category 1 (CategoryPage)
    ----- Article 1 (ArticlePage)
    ----- Article 2 (ArticlePage)
    ---- Category 2 (CategoryPage)
    ----- Article 3 (ArticlePage)


    Вы можете ограничить для каждого типа страницы какие страницы могут использоваться как дочерние (subpage_types) и какие типы страниц могут использоваться как родительские (parent_page_types).

    Вот пример:
    class HomePage(Page):
        # Ваши поля, если нужно
    
        # Тут не ограничиваем дочерние и родительские страницы
        # т.к. на сайте могут быть не только 3 типа страниц
    
    
    class CategoryPage(Page):
        # Ваши поля, если нужно
    
        # Может быть создана только как дочерняя страница для HomePage
        parent_page_types = ['your_django_app_name.HomePage']
    
        # Дочерними страницами могут быть только CategoryPage.
        subpage_types = ['your_django_app_name.CategoryPage']
    
    
    class ArticlePage(Page):
        # Ваши поля. StreamField, или что угодно
    
        # Может быть создана только как дочерняя страница для CategoryPage
        parent_page_types = ['your_django_app_name.CategoryPage']
    
        # Дочерних страниц у этой страницы быть не может
        subpage_types = []


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

    P.S.: ответ запоздал, но надеюсь он будет полезен тем у кого возникнет похожий вопрос.
    Ответ написан
    Комментировать
  • Почему почти все open source проекты на ASP.NET требуют денег за удаление копирайта?

    @Z-r
    > Почему...

    Почему добрая половина программ на Жуквери вообще непонятно кому принадлежит и на каких условиях распространяется? А у программ на Емакс-лиспе напротив — всегда очень педантично оформлен список правообладателей и лицензия.

    Субкультура такая сложилась.

    > Насколько такая «жадность» соответствует открытым лицензиям?

    Открытые лицензии — это лицензии, выданные неограниченному кругу лиц. Никакого отношения к «жадности» или «нежадности» они не имеют. Есть, к примеру, целая куча открытых лицензий, что вообще запрещают вам пользоваться программой бесплатно дольше N дней, эта практика даже имеет особое название — shareware.

    Может быть, вы хотите узнать, насколько требование про «powered by...» соответствует понятию свободной программы? Я не усматриваю никаких противоречий между требованием атрибуции и определением свободной программы.

    Или возможно, что вы хотите спросить, не противоречит ли такое требование какой-нибудь отдельно взятой свободной лицензии — ну, например, самой популярной из таковых — GNU GPL?

    Если брать ее актуальную (третью) версию, то я тоже никаких противоречий не усматриваю. Напротив — пункт «b» статьи 7 прямо разрешает требовать «preservation of specified reasonable legal notices or author attributions in that material or in the Appropriate Legal Notices displayed by works containing it». Этот пункт зачастую трактуется довольно широко — скажем, лицензия OnlyOffice’а требует отображать в пользовательском интерфейсе уже не простую гиперссылку, а графический логотип (если это технически возможно). И кстати, это еще один пример в вашу копилку, ибо его серверная часть также написана на ASP.NET’е.

    То же справедливо и в отношении GNU Lesser GPL и GNU Affero GPL.

    Тем более это никак не противоречит безвольным (lax) свободным лицензиям, которые потому так и зовутся, что позволяют накручивать любые дополнительные запреты.

    P. S. [цитаты реплик — из комментариев]

    > Как раз тот факт, что «так сложилось» я понимаю. Я не понимаю, почему так сложилось.

    А это, я полагаю, вопрос, который еще ждет своего исследователя — историка свободных программ. Учитывая, что я вообще не знаю ни одного человека с такой специализацией (а вы?), надо думать, что кроме догадок вы в обозримой перспективе ничего не получите.

    Формат вопросов и ответов — на самый подходящий для догадок и версий, но если вам все-таки интересна лично моя гипотеза, то я думаю, что вопрос следовало бы задать наоборот — почему за пределами субкультуры ASP.NET’чиков так не принято — нет, серьезно, по всему получается, что это отличный способ этичного заработка на свободных программах! Подозреваю, что за ее пределами о таком приеме просто не знают.
    Ответ написан
    4 комментария
  • Как наладить обмен данными между клиентом и сервером?

    AlexanderYudakov
    @AlexanderYudakov
    C#, 1С, Android, TypeScript
    1. Убрать все "lock" - никакой пользы от них здесь нет.

    2. Убрать все "try {...} catch (Exception e) { Debug.Print(e.Message); }
    Никакой пользы от них тоже нет.

    3. Убрать IsCorrect. Читаем длину сообщения, затем читаем нужное количество байт. А то, что вы называете "Фактическая длина" - плод вашей фантазии.

    4. Читать надо ни до тех пор, пока DataAvailable, а до тех пор, пока не будет получено нужное количество байт. Синхронно, либо асинхронно вы это будете делать - без разницы.

    5. А теперь собственно ответ на ваш вопрос:
    Механизм чтения сообщений умирает, когда читатель читает быстрее, чем писатель пишет (либо сеть передает). В этом случае DataAvailable вернет false; ваш алгоритм, вместо того, чтобы дождаться оставшейся части сообщения, прерывает чтение на середине сообщения, говорит, что IsCorrect() == false, и зависает.

    6. Формат сообщения имеет смысл упростить: первые 4 байта - длина тела в байтах; затем само тело (например, в UTF-8, если вам нужен текст). Соответственно, читаем сначала 4 байта, а потом еще столько, сколько там указано.

    P.S.
    7. Вызывать Encoding.GetString() следует только на целом сообщении; если вы делаете это на части сообщения - результат непредсказуем.

    8. Сетевые исключения обрабатывать, конечно же, надо. Однако Debug.Print - это не решение проблемы. Сокет имеет смысл закрыть. А дальше - либо уведомить об этой проблеме своего клиента (кто обрабатывает полученные сообщения), либо, по-хорошему, - попытаться открыть другое соединение и повторить попытку продолжить работу так, чтобы клиент ничего не заметил :)
    Ответ написан
    Комментировать
  • Тестовое задание для собеседования на php программиста?

    Maksclub
    @Maksclub Куратор тега PHP
    maksfedorov.ru
    Мы ожидали увидеть приложение с использованием готовых библиотек для работы с HTTP, базой данных, работы с консолью. А также легко расширяемое и поддерживаемое.

    Теперь понятно, что они хотят — но в ТЗ не было указано:
    • Под HTTP понимают либы, работающие с PSR 7 или близкие по «духу», например Symfony HTTP Foundation
    • Под БД понимают Doctrine 2 или Eloquent
    • По консольным — на рынкке используют как правило Symfony Console

    Именно это и хотели, предлагаю вам либо объяснить и написать уже на компонентах, либо послать к черту, НО отметить этот момент и на будущее таки делать уточнение, каковы ожидания от задания...
    Нескольких людей встречал до фанатизма не принимающих сторонние пакеты, и наоборот... Это нужно учитывать... видел задания на PHP 5.3, видел задания строго на Codeigniter...

    Тут на Тостере был пример, когда человек применил композер даже не для сторонней либы, а для внутренних, так на него тимлид сокрушился...
    Разве Composer бесполезен в 2017?

    Люди разные :)


    Материал по компонентной разработке

    Елена,
    не нужно Symfony ассоциировать с фреймворком — это в первую очередь компоненты — потрясающие компоненты:
    • Symfony Console
    • Symfony HTTP Foundation
    • Syfony Routing (к слову очень быстрый, недавно ускорили его в 70 раз ребята и сделали самым шустрым компонентом)
    • Twig
    • Debug
    [*!*] В некоторых вакансиях даже указывают, что нужно уметь работать с некоторыми выше перечисленными компонентами :) Пруф: https://novosibirsk.hh.ru/vacancy/25367906

    Doctrine — совсем не из Symfony и этот компонент можно использовать где угодно

    Zend к слову пошел по тому же пути, например
    • для HTTP Request/Response PSR 7 у него есть отличный компонент Zend Diactoros,
    • для работы с PSR 15 Middleware есть компонент Zend Expressive,
    • для работы с ролями и правами крутое решение Zend ACL

    Laravel уже да — фреймворк, и опять же на компонентах, и можно использовать его куски, например у него замечательная ORM (Active Record) — в отличие от AR в Yii2 ее можно (и нужно) использовать в любом кастомном проекте вне фреймворка Laravel или вообще фреймворка там , где Доктрина лишняя


    Почитать и посмотреть:

    Современный PHP без фреймворков (статья Mail.ru на Хабре)
    Консольное приложение (мастер-класс) — собрано из компонента Symfony Console и ORM Eloquent (от Ларавел)
    PSR-7 фреймворк от Д.Елисеева
    Ответ написан
    3 комментария
  • Какие ресурсы понадобятся для разработки своей медицинской CRM?

    Exploding
    @Exploding
    wtf?
    Чего-то я не очень пойму, что тут сложного то?
    Понятно, что предварительно ничего не понятно, но из того, что есть:

    • регистрация на сайте компании: да ради бога
    • ведение личной истории: в формате "темы форума" с "постами" думаю пойдет. Иного врачам и не нужно, да и сами они не знают еще что им нужно и никто не знает, т.к. тематика специфическая, поэтому как для старта - думаю вполне, а там допиливать уже можно будет.
    • запись к врачам: форма а-ля feedback + 1 select со списком врачей?)) Уточняйте.
    • онлайн-консультации: siteheart и ему подобные сервисы вполне решают. Было бы кому отвечать.
    • онлайн-оплата может быть: может быть
    • администрирование всего этого: хорошо
    • интеграция с чем-нибудь понадобится: с чем-нибудь всегда отлично получается
    • создание мобильного приложения: а вот это не надо! Адаптивной ровной версии вполне... По крайней мере на таком сыром старте.

    Ну это так... на вскидку... Даже CRM сюда с трудом клеится...
    UPD: + мой ответ также служит наглядным примером того, на сколько "размыта" ваша задача и на сколько по разному ее видят разработчики на данном этапе.
    Ответ написан
    Комментировать
  • Что обязательно нужно знать в PHP и что посоветуете выучить?

    voronkovich
    @voronkovich
    Я бы порекомендовал посмотреть плейлист PRS-7 фреймворк на канале Дмитрия Елисеева.
    Там обсуждается создание современного фреймворка на PHP и рассматриваются такие темы как: PSR, Dependency Injection, шаблонизаторы и т.д. Крайне рекомендую!

    Также советую почитать книгу Джоша Локхарта (создатель фреймворка Slim) Современный PHP.
    Slim-фреймворк тоже можете посмотреть, он достаточно добротно написан :).

    TDD. Есть хорошая книга Кента Бека Экстремальное программирование. Разработка через т.... Примеры там даны на Java, но будут понятны любому кто знает хотя бы один Си-подобный язык (PHP к таковым относится!).

    UPD: Вы просили указать: можно ли с вашими знаниями устроится джуном. Я думаю, что да, можно.
    Ответ написан
    Комментировать
  • Как полность удалить или отключить систему обновлений в Windows 10?

    Moskus
    @Moskus
    Запустить gpedit.msc через Run...
    Далее - Computer Configuration > Administrative Templates > Windows Components > Windows Update, установить Configure Automatic Updates в значение Disabled.
    Ответ написан
    Комментировать
  • Как проверить массив из объектов на пустоту?

    borisdenis
    @borisdenis
    Ленив и вреден...
    Читаем тут и видим:
    Работать с ArrayList просто: создайте нужный объект, вставьте объект методом add(), обращайтесь к нему методом get(), используйте индексирование так же, как для массивов, но без квадратных скобок. ArrayList также содержит метод size(), который возвращает текущее количество элементов в массиве (напомню, что в обычном массиве используется свойство length).


    Один запрос в гугл и ответ готов, не ленитесь
    Ответ написан
    2 комментария
  • Рентабельно ли держать отдельный хостинг для изображений?

    Moskus
    @Moskus
    Вы плохо понимаете, что такое "рентабельность" и что такое "отдельный хостинг для изображений".

    Отдельный хостинг для изображений - это хостинг, который заточен под отдачу статики, а не бесплатный сервис для публикации фото для фотографов или вставки картинок на форумы. Правилами последних, к слову, прямая линковка без ссылки может быть вообще запрещена. Хостинг для изображений - это сервисы вроде этого: https://www.akamai.com/us/en/solutions/why-akamai/...

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

    Перефразируйте вопрос, чтобы он имел смысл.
    Ответ написан
    5 комментариев
  • 360 3d панорама есть ли плагин?

    profesor08
    @profesor08
    В плагине для ios не так много кода, можно его взять за основу своего плагина для android.
    Ответ написан
    2 комментария
  • Как реализовать отдельный поток для постоянной проверки доступа к интернету?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Java
    Седой и строгий
    Это так не делается. Нужно подписаться на событие изменение статуса сети и проверять в обработчике этого события.

    AndroidManifest.xml
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.INTERNET" />
    <receiver android:name="NetworkChangeReceiver">
        <intent-filter>
            <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
            <action android:name="android.net.wifi.WIFI_STATE_CHANGED" />
        </intent-filter>
    </receiver>

    NetworkUtil.java
    import android.content.Context;
    import android.net.ConnectivityManager;
    import android.net.NetworkInfo;
    
    public class NetworkUtil {
        public static final int TYPE_WIFI = 1;
        public static final int TYPE_MOBILE = 2;
        public static final int TYPE_NOT_CONNECTED = 0;
    
        public static int getConnectivityStatus(Context context) {
            ConnectivityManager cm = (ConnectivityManager) context
                    .getSystemService(Context.CONNECTIVITY_SERVICE);
    
            NetworkInfo networkInfo = cm.getActiveNetworkInfo();
            if (networkInfo != null) {
                if(networkInfo.getType() == ConnectivityManager.TYPE_WIFI)
                    return TYPE_WIFI;
    
                if(networkInfo.getType() == ConnectivityManager.TYPE_MOBILE)
                    return TYPE_MOBILE;
            } 
            return TYPE_NOT_CONNECTED;
        }
    }

    NetworkChangeReceiver.java
    public class NetworkChangeReceiver extends BroadcastReceiver {
        @Override
        public void onReceive(Context context, Intent intent) {
            int status = NetworkUtil.getConnectivityStatus(context);
            if(status == NetworkUtil.TYPE_NOT_CONNECTED) {
                // Действия при недоступности сети
            }
            else {
                // Действия при доступности сети
            }
        }
    }
    Ответ написан
    1 комментарий
  • Для чего используется Java в современном вебе?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Вот я, как раз сбежал обратно на яву после 8 лет программирования на python!
    И несказанно этому доволен - java8 стала очень и очень приятная, ну а бонусом прирост в скорости на моем приложении - 200х!
    И так, как минимум рекомендую для web посмотреть jooby.org, sparkjava.org и конечно же spring boot.
    На jooby как раз пишем маркет, очень весело и современно.
    Да, на котлин пока не смотрел.
    Ответ написан
    2 комментария
  • Как обновить данные в таблице посредство DRF?

    kentuck1213
    @kentuck1213
    1. почитать www.django-rest-framework.org/api-guide/filtering
    2. Вы должны не через GET запрос обновлять данные а через PUT или PATCH
    Ответ написан
    Комментировать
  • Как понять какой код лучше подойдет для разработки?

    DmitriyEntelis
    @DmitriyEntelis
    Думаю за деньги
    Язык это инструмент. На любом современном языке можно сделать плюс-минус что угодно.
    java / ruby / php / python / go / node.js - выбирайте любой и вперед.

    java - популярен, но на 99.9% энтерпрайз проекты со всеми их плюсами и минусами
    ruby - популярен сильно меньше, но спрос есть постоянный, в основном стартапы
    python - популярен сильно меньше, но спрос есть постоянный, как стартапы так и энтерпрайз
    php - дико популярен, есть разные проекты от "сайт под ключ за 2 копейки" до стартапов и энтерпрайза
    go - не популярен, в основном стартапы, дикий спрос на западе
    node.js - умеренно популярен, в основном стартапы, дикий спрос на западе

    * под популярен - понимается количество людей на нем пишуших
    все моё субъективное мнение, возможно я где-то не прав
    Ответ написан
    Комментировать
  • Почему до сих пор никто не создал p2p мессенджер?

    webinar
    @webinar
    Учим yii: https://youtu.be/-WRMlGHLgRg
    Почему до сих пор никто не создал p2p мессенджер?

    Потому что это никому не нужно и в этом нет смысла. Именно поэтому нет
    стульев для людей ростом выше 18м,
    летающих ассенизаторских машин,
    ванны из сахара,
    валюты, которая привязана только к своей популярности (а нет есть такие)
    и прочих интересных и бесполезных штук.

    Если Вы ищите бизнес идею - лучше реализовать "facebook только красный", недавно предлагали на общественных началах поучаствовать в этом мега проекта. Скрепя зубами отказался. Кстати могу дать контакт, им наверняка не помешает в проекте p2p мессенджер.
    Ответ написан
    2 комментария