• Самый простой бесплатный способ включить NTFS HDD на MacOS?

    sergey-kuznetsov
    @sergey-kuznetsov
    Автоматизатор
    macFUSE не имеет собственного драйвера NTFS а предлагает подгрузить NTFS-3G, который глючный и тормозной.

    Мне нравятся дрова от Paragon которые ставятся бесплатно в пробном режиме.

    А с небольшим хаком триал можно сделать вечным.
    1. Ставим 2027 год в настройках MacOS.
    2. Устанавливаем, запускаем Парагон, берем триал 10 дней и не перезагружаемся.
    3. Отключаем Парагон, закрываем его. Возвращаем год в сегодняшний.
    4. Перезагрузка.
    5. Триал теперь вечный.
    Ответ написан
    3 комментария
  • Есть ли область видимости у директив препроцессора C++?

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

    namespace what {
    #define apples 2
    }
    
    namespace stuff {
        class foo {
        private:
            int apples = 3;  // ОШИБКА: 2 - недопустимое имя
        public:
            int read_apples() {
                return apples;  // 2
            }
        };
    }


    Мораль: не используйте макросы там, где можно обойтись constexpr константами или inline функциями. А там, где они необходимы, давайте им длинные страшные КРИЧАЩИЕ_ИМЕНА.
    Ответ написан
    Комментировать
  • Что означают A.Type и A.self, где A - некий класс, в языке Swift?

    Для любого типа T, T.Type - это метатип (metatype), то есть тип, объекты которого предоставляют описание типа T. Статические функции и init-функции T становятся функциями-членами T.Type. Пример:

    struct Duck {
        static func kind() -> String { return "Bird" }
        init() { }
        func talk() { print("Quack") }
    }
    
    let meta: Duck.Type = Duck.self
    meta.kind()  //=> Bird
    let obj: Duck = meta.init()
    obj.talk()  //=> Quack


    Существует 2 класса метатипов, но на практике встречаются existential metatypes, то есть их объекты могут описывать как данный тип T, так и любой наследник (subtype) типа T. Другими словами, множество объектов типа T.Type - это U.self для всех типов U: T. Пример:

    class Animal { class var name: String { return "Animal" } }
    class Cat: Animal { override class var name: String { return "Cat" } }
    class Dog: Animal { override class var name: String { return "Dog" } }
    
    var meta: Animal.Type
    meta = Cat.self
    meta.name  //=> Cat
    meta = Dog.self
    meta.name  //=> Dog


    Или, например, можно представить себе такую функцию генерации животных:

    class Animal { ... }
    
    func createAnimal(_ type: Animal.Type) -> Animal {
        if type == Cat.self {
            return Cat(...)
        } else if type == Dog.self {
            return Dog(...)
        } else {
            fatalError()
        }
    }


    На практике, такая функциональность метатипов используется редко. Как правило, они служат для явной специализации шаблонных функций. Например:

    func unsafeCast<T, U>(_: T, to: U.Type) -> U

    Здесь единственный способ указать тип U при вызове - это передать "фиктивный" параметр тип U.Type, так как аргументов типа U функция не принимает. Вернее, это лучший и принятый в Swift способ. Можно было бы выкрутиться вот так:

    func unsafeCast<T, U>(_: T, sameAs: U) -> U

    Но, понятно, что для этого нужно иметь под рукой объект типа U, и это не идеальный вариант. Жаль, что нельзя писать просто unsafeCast<U>(t) при вызове.

    При использовании метатипа U.Type таким образом, его значение, как правило, игнорируется. То есть даже если вы передадите туда метатип наследника типа U, то функция всё равно будет работать с U.

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

    @itsjustmypage
    Если как можно проще и без излишеств в виде серверной части с базами данных, то можно попробовать CMS статических сайтов. Эта методология называется JAMstack (Javascript + API + Markup). На выбор:
    https://getpublii.com/
    https://gohugo.io/
    https://www.11ty.io/
    https://jekyllrb.com/
    https://www.gatsbyjs.org/
    и много других. Как правило все они бесплатны для одиночного использования.

    Всё это поддерживать через https://www.netlify.com/ , каждый коммит на гитхаб с изменениями мгновенно скомпилируется в статичную верстку и загрузится на сайт с его помощью. Бесплатно для одиночки.

    Поиск можно скостылить через подгрузку JSON файла с нужной информацией (например, названиями всех заметок, датами, тегами и т.д.) и поиском по этому файлу на клиенте, либо использовать вот этот замечательный сторонний сервис https://community.algolia.com/docsearch/ Он тоже абсолютно бесплатен и, замечу, используется на сайтах документации к Vue.js, React и Bootstrap. Уровень, как никак! Пример: https://vuejs.org/v2/guide/

    p.s. Wordpress советуют исключительно из-за того, что это самая популярная серверная CMS в мире. Но это такой тяжёлый оверхед и говнокод, что лучше не надо. Даже среди серверных решений есть достаточно хороших миниатюрных альтернатив.
    Ответ написан
    Комментировать
  • Что такое вещественные числа?

    iiiBird
    @iiiBird
    Пока ты спишь - твой конкурент совершенствуется
    Понятным и доступным языком напишите

    Были натуральные числа. тобишь те, которые использовали при счете: 1, 2, 3 ... а потом кому то понадобились и отрицательные числа включить туда и дробные, и иррациональные. и он их назвал вещественными. тобишь вещественные числа - это те же натуральные, но еще и включает отрицатаельные, иррациональные и дроби.
    p.s. вот нарыл книгу матана. хорошо расписано: matematika.phys.msu.ru/files/a_stud_gen/171/matan.pdf
    Ответ написан
    1 комментарий
  • Как соединить линиями блоки div?

    arsenty
    @arsenty
    Full Stack Designer
    Без JS и с описанной адаптивностью: https://codepen.io/arsenty/pen/mYxXoQ
    Ответ написан
    1 комментарий
  • Что почитать по работе JavaScript "под капотом"?

    Николас Закас "JavaScript. Оптимизация производительности"
    Ответ написан
    1 комментарий
  • Какую можете посоветовать литературу по взлому и пентесту веб сайтов?

    @uroot
    Да какая литература? Она выходит уже устаревшей. Форумы и только форумы: античат, эксплоит и другие. Читайте статьи и пробуйте. Не получается - задавайте вопросы на форумах.
    Вам нужно понять как работают такие вещи, как:
    1. SQL-injection
    2. PHP-injection
    3. XSS
    4. CSRF
    5. LFI
    6. RFI
    7. Эксплойты (поиск и эксплуатация)
    8. Научится работать со сканерами (особенно Metasploit)

    Как научитесь находить и раскручивать вышеупомянутые, как самые популярные, виды атак, можете заявить, что что-то знаете. В процессе познакомитесь с кучей других видов уязвимостей, их разнообразием.
    Ответ написан
    Комментировать
  • Какую книжку по TCP/IP лучше всего прочитать?

    @Amicable
    Весь в вопрос в применении знаний. Если нужно решить конкретную задачу, то лучше почитать статью или мануал тезисно. А потом уже читать книгу, в таком случае знания лягут на не которую практику, и читая какие-то вещи можно сразу себе отметить, "это так сталкивался, а вот про это вообще не знал". И подобное запоминается лучше.
    Касаемо книг, то указанная Крейг Хант «TCP/IP — Сетевое администрирование» хороша, читается нормально.
    А так скорее всего для базы можно вообще любую по сетям читать, первая половина будет у всех примерно одинакова.
    Ответ написан
    Комментировать
  • Какую книжку по TCP/IP лучше всего прочитать?

    zelenchuk
    @zelenchuk
    Занимаюсь консалтингом в бизнес и ИТ сфере.
    Вместо книг рекомендую посмотреть курс по сетям. К примеру, можно взять Андрея - https://www.youtube.com/watch?v=OLFA0soYGhw&list=P...

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

    Taraflex
    @Taraflex
    Ищу работу. Контакты в профиле.
    Белый или черный
    https://github.com/Taraflex/Brackets-Color-Highlig...
    https://github.com/Taraflex/Brackets-Color-Highlig...
    Цвет из картинки лучше вычислить заранее на сервере, ибо на клиенте не выйдет отобразить цветную карточку до загрузки картинки
    https://github.com/ksubileau/color-thief-php
    https://github.com/thephpleague/color-extractor
    https://github.com/brianmcdo/ImagePalette
    https://www.phpclasses.org/package/3370-PHP-Extrac...
    ну и еще можно нагуглить

    UPD
    Градиентный блур на js
    https://jsfiddle.net/8ujmn5zs/62/
    Ответ написан
    Комментировать
  • Какие проблемы решает качественный дизайн сайта?

    @Insayt
    Ну тут надо уточнить, что дизайн сайтов/приложений не является продуктом. Это услуга.
    "Картошка" - это продукт. "Доставка картошки" - это услуга. Вы предоставляете услуги, соответственно ставить вопросы надо исходя из понимая этого.

    Бизнес выбирает поставщика услуг по нескольким пунктам:
    1. Доступность - важно что бы было легко вас найти.
    2. Понимание проблем клиента - важно что бы поставщик услуг четко понимал как его деятельность скажется на нашем бизнесе.
    3. Скорость реакции сотрудников и их вежливость - тут думаю все понятно, если на email отвечают неделями и на от*бись, то такой поставщик услуг не получит заказ.


    В контексте вашего вопроса речь идёт о "Понимании проблем клиента".
    И тут важнее не написать большой список, а выбрать конкретный пункт и давить на него. Объясню:

    1. Увеличение продаж - на этот пункт вы влияете очень косвенно (ниже объясню почему). Потребитель больше будет смотреть на цену и скорость доставки, чем на форму кнопочки "Перейти в корзину".
    2. Привлечение внимания - это тоже не ваша работа. Привлекают внимание маркетологи. Клиент даст рекламу в директ, и она будет привлекать внимание. Если вы занимаетесь дизайном рекламных баннеров, то тогда можно говорить о привлечении внимания, но в контексте вашей деятельности вы привлечением внимания к продукту/услуге заказчика не занимаетесь.
    3. Большая конкурентоспособность/отстройка от конкурентов - это тоже не про вас. Конкурентоспособность никак не соотносится с визуальной составляющей. Вы можете сделать идеальную упаковку для пиццы, но если её везут 3 часа, то никакой конкурентоспособности быть не может.
    Отстройка от конкурентов - это тоже не про вас. Немного погуглите про то что такое "отстройка от конкурентов", и поймете это. Отстраиваются на уровне позиционирования и бизнес процессов. Например вы открыли магазин продуктов возле дома. Через пол года рядом открывается пятерочка. Вы начинаете проседать по доходам, потому что пятерка дает лучшую выходную цену для клиента, и тогда вы решаете отстроится от конкурента, убираете весь ассортимент и становитесь магазином "Колбасы от Васи". И расставляете на прилавке 1 вид продукта, но в широком ассортименте, который пятерочка никак не может себе позволить, потому что им не выгодно иметь широкий ассортимент одной товарной позиции. Вот это и есть отстройка.

    А теперь к важному. Продавайте "Повышение конверсии". И только это.
    Бизнес делает рекламу, тратит на это деньги, и тут появляетесь вы и говорите, мы можем сделать новый дизайн вашего сайта, уменьшить "боль" потребителя от использования, что повысит вашу конверсию на N процентов + увеличит кол-во повторных заказов от существующих клиентов. Повышение конверсии даст большую эффективность вашим рекламным затратам, потому что вы можете потратить 100500 миллионов денег, но если вся реклама будет вести на непродуманный, некрасивый и абсолютно неюзабельный лендинг - ваши деньги вылетят в трубу. Такая постановка вопроса будет очень понятна любому бизнесу.

    Так что вывод - переимуйте абстрактный пункт "Увеличение продаж" в более конкретный "Увеличение конверсии", и продавайте его.
    Ответ написан
    1 комментарий
  • Как спланировать БД (чат)?

    zoonman
    @zoonman
    ⋆⋆⋆⋆⋆
    Итак, что вам нужно. Предполагается, что у вас есть табицы user и group.

    Таблица со списом чатов

    chat
    	id - идентификатор чата
    	name - название чата (тема обсуждения)
    	user_id - идентификатор  пользователя, который создал чат (необязательно)


    Список участников чата
    roster
    	chat_id - идентификатор чата
    	user_id - идентификатор пользователя
    	group_id - ид группы, если пользователь пишет от имени группы или NULL, если от пользователя (можно даже держать 2 записи, где group_id = null и где нет)


    Список сообщений
    messages
    	id - идентификатор сообщения
    	chat_id - идентификатор чата
    	user_id - ид пользователя
    	group_id - ид группы, если сообщение отправлено от имени группы или NULL, если от пользователя
    	text - текст сообщения


    Статусы сообщений
    message_status
    	message_id - идентификатор сообщения
    	user_id - идентификатор пользователя
    	read - прочтено или нет
    	notified - отправлено уведомление о сообщении или нет


    Итак, как это работает.
    Круг, в котором общаются пользователи называется чатом (chat).
    Кто находится в чате определяется через ростер (roster). Ростер может не быть показан в интерфейсе.
    Кто кого приглашает в чат определяется через бизнес-логику приложения.

    В данной схеме сценарий "Пользователь2 пишет в Группа1" выглядит так.
    Создается чат, далее в ростер добавляются П2 и Г1. Далее просто создается сообщение от имени П2. Через бизнес-логику находится владелец Г1 и ему отправляется уведомление.
    Ответ написан
    Комментировать
  • Есть ли книги для развития действительно математического мышления/не зазубривания формул?

    32bit_me
    @32bit_me
    Программист, встраиваемые системы
    В школе решал много задач. Задачник Сканави практически весь.
    Без формул - никак.
    Ответ написан
    1 комментарий
  • Как начать брать крупные заказы на фрилансе?

    paulradzkov
    @paulradzkov
    Дизайнер, верстальщик, начальник отдела UI
    Большинство советует потратить полгода-год, работая в компании, но вопрос стоит «Как начать брать крупные заказы на фрилансе?». Да, работа в продуктовой компании поможет поднять свой уровень, но это не тот ответ. После работы в хорошей компании может и не захотеться возвращаться во фриланс. Вопрос стоит «как повысить свою компетентность, продолжая работать на фрилансе, и выбраться из потенциальной ямы лендингов и бложиков?»

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

    Применяйте продуктовые подходы во фрилансе.
    Свяжитесь с прошлыми заказчиками и поинтересуйтесь, всё ли работает как ожидалось, надо ли что-то доделать, переделать или улучшить. Заполучите постоянных заказчиков. Если повторно поработаете над своим прошлым проектом, заметите, что было сделано не очень, и поймете, как делать лучше сразу.

    В новых проектах старайтесь выторговать больше времени. И за это дополнительное время пробуйте сделать больше, чем просили. Например, сделайте клиентскую оптимизацию, выбейте как можно больше очков в pagespeed, напишите документацию. Делайте проекты с мыслью о том, что этот проект к вам вернется и пробуйте на практике, всё, что хочется изучать.

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

    Саморазвитие на фрилансе по-любому будет идти медленнее, чем в развитой продуктовой компании.
    Ответ написан
    3 комментария
  • Есть ли книги для развития действительно математического мышления/не зазубривания формул?

    @evgeniy_lm
    Д.Кнут "Искусство программирования"
    "Конкретная математика" (то же самое для детей)
    Ответ написан
    5 комментариев
  • Есть ли книги для развития действительно математического мышления/не зазубривания формул?

    voronkovich
    @voronkovich
    Есть хорошая книга выдающегося польского математика Вацлава Серпинского 250 задач по элементарной теории чисел. Она замечательна тем, что в ней даны задачи, решение которых не предполагает знаний высшей математики. При этом сами задачи достаточно трудны и имеют очень короткие формулировки и решения.

    Вторая книга, которую я бы порекомендовал - книга советского математика Хинчина: 3 жемчужины теории чисел. В данной книге описаны решения 3-х трудных задач для которых были найдены решения с применением элементарной математики (без всяких диффуров и гомотопий!). Решением одной из описанных задач, в свое время занимался сам Гильберт.

    Ну и неплохо было бы какую-нибудь книгу по логике, которая собственно и составляет основу математического мышления. Например, эту: Введение в логику и научный метод.
    Ответ написан
    Комментировать
  • Laravel CRUD генератор?

    fomvasss
    @fomvasss
    PHP developer
    Ответ написан
    Комментировать