• Какую графическую библиотеку стоит выбрать для C++/C#?

    @fman2
    Смотря для чего будете программировать.
    Windows - only C# + WPF, тут даже аналогов нет.
    Linux - Qt или GTK + Vala. Vala это такой транслятор в C код. Синтаксис взяли с C#
    Если не определились - Qt + C++
    Ответ написан
    2 комментария
  • Какой php фреймворк учить?

    @Vasiliy_M
    1) В чем смысл фрейморков?
    За тебя уже все написано. Каркас, CRUD/ORM и масса плюшек.

    2) Какой учить первый?
    никто не даст ответа. Индустрия сходит с ума, территория PHP проклята - одному работодателю нужен один фреймворк, другому - другой. Угнаться за всем этим - нереально. В идеале - искать работодателей, готовых вас "вырастить", т.е. взять лишь с минимальным набором знаний, например, теоретических. Все фреймворки знать невозможно. А если и возможно, то это лишь временно - нереально всю жизнь знать все возможности десятка пхпшных фреймворков.

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

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

    @Mercury13
    Программист на «си с крестами» и не только
    Сейчас это крайне тяжело. Заражение возможно через четыре канала:
    • Уязвимости конкретного браузера. Кстати, это одна из причин, почему каждая вкладка Хрома — отдельный (и низкопривилегированный) процесс: если процесс хакнут, меньше шансов, что дойдёт до овладения компьютером.
    UPD. Это такой набор данных (например, специально созданный GIF/JPEG/HTML), который, например, пробивает в браузере буфер.
    • Уязвимости плагинов. Уязвимости в Java — это настолько обсосанная вещь, что и говорить не буду; вроде от Java в вебе отказались даже сами Oracle. Flash каждую неделю обновляют. Уязвимости плагинов плохи двумя вещами: 1) Пускай сейчас в мире один браузер — есть ещё два десятка прихлебателей и три браузера «труба пониже, дым пожиже». А Флэш один на всех; 2) Старое плагинное API, оставленное только Флэшу,— большая дыра в безопасности.
    • Уязвимости прочего софта. Казалось бы, качаешь PDF — а это эксплойт для Adobe Reader.
    • «Троянские кони» — но это уже надо своими руками запустить EXE.
    Кстати, в нашей пиратской культуре считается, что UAC надо побыстрее отключить, и во всех «левых» дистрибутивах он выключен. По-моему, это в корне неверно.
    Ответ написан
    8 комментариев
  • Делает ли XHR запросы Selenium?

    EreminD
    @EreminD
    Кое-что умею
    ну, вообще, должен. JS он ли будет работать, либо не работать совсем.
    На всякий случай, если вдруг все же не полетит, вы всегда можете заставить драйвер выполнить ваш скрипт
    WebDriver driver = new ChromeDriver();
    
    if (driver instanceof JavascriptExecutor) {
    	((JavascriptExecutor) driver).executeScript("alert('hello world');");
    }
    Ответ написан
    Комментировать
  • Сортировка строк по большей "схожести"?

    @santaatnas
    Java, Python, Php
    Вот пример с алгоритмом Programming Classics: Implementing the World's Best Algorithms by Oliver (ISBN 0-131-00413-1). Есть еще другие реализованные алгоритмы в php, почитайте здесь levenshtein и здесь soundex. Либо можете написать свой алгоритм.

    $searchPhrase = "Поиск строки 14";
            $words = ['Поиск строки 14', 'рандомный текст 14','строки 14'];
    
            $wordsWithSimilarity = [];
            foreach ($words as $word) {
                $similarity = similar_text($searchPhrase, $word);
                $wordsWithSimilarity[$similarity] =$word;
            }
    
            krsort($wordsWithSimilarity);
    Ответ написан
    1 комментарий
  • Как ускорить получение данных с АПИ?

    YardalGedal
    @YardalGedal
    yeah boy
    Я, наверное, подытожу все предыдущие ответы:

    1. Вам нужно использовать какое-то хранилище на своём сервере, чтобы в него записывать данные и из него отдавать их пользователю.
    2. Данные в хранилище будут синхронизироваться с API раз в N единиц времени.
    3. В качестве хранилища может выступать:
    3.1 Реляционная База данных, например Mysql.
    3.2 Нереляционная База данных, например Redis.
    3.3 Локальный кэш.

    Если сейчас вы ничего не поняли или не знаете как это реализовать - клац сюда

    И да, других ПРОСТЫХ вариантов НЕТ. Нельзя просто так взять и ускорить что захочется.
    Ответ написан
    2 комментария
  • Как бы сделать такие рамки?

    golovanovd
    @golovanovd
    Студент, iOS-разработчик
    Можно сделать наложением маски, как вариант
    Ответ написан
    Комментировать
  • Какие есть сайты для проверки своих знаний PHP?

    certification.mail.ru

    Поделитесь пожалуйста потом полученным сертификатом) Думаю что mail.ru не посчитает Вас сеньор-сеньором)
    Ответ написан
    2 комментария
  • Что подразумевается под strong knowledge С++?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Но вот что вообще определяет уверенное знания С++. То есть, что именно для этого нужно знать?

    Это очень просто: нужно уметь прочитать любой фрагмент кода на C++ и понять его.
    Открывайте С++ исходники наугад и читайте любую функцию. Если вы в состоянии сделать это много раз подряд с разными проектами -- скорее всего вы уверенно знаете С++.
    Ответ написан
    4 комментария
  • Что подразумевается под strong knowledge С++?

    @asd111
    Обычно имеется в виду знание stl, boost, умные указатели, move semantics, многопоточность и желательно посмотреть Google C++ Style Guide .
    Умение писать тесты, знание ninja build или другую build tool.
    Умение пользоваться дебагером.
    Ещё желательно уметь использовать valgrind и какой нибудь static analysis tool наподобие pvs studio.
    И ещё git.
    Ответ написан
    Комментировать
  • Переходы из строк в UITableView к другим данным в рамках одного VC?

    maximglobak
    @maximglobak
    iOS developer
    Есть правило - разделяй и властвуй =) (S в SOLID)
    Придерживаясь этому правилу проект будет чище чем у тех, кто не придерживается.
    На первое время всегда кажется, что отдельный VC не нужен для этого, но зачастую логика позже начинает усложнятся и отличаться от того, что было на первом экране. Поэтому я советую разделить на два экрана и у тебя будут развязаны руки на дальнейшие изменения, да и код в одном VC будет чище.
    А экономия памяти, в таком случае, будет минимальным.
    Ответ написан
    Комментировать
  • Всплывающие окно iOS, как реализовать?

    golovanovd
    @golovanovd Автор вопроса
    Студент, iOS-разработчик
    doublench21 @doublench21
    Дмирий Голованов, https://developer.apple.com/ios/human-interface-gu...
    Написано 53 минуты назад


    https://gist.github.com/barbietunnie/e5547f3518043...

    class MainViewController: UIViewController{
        override func viewDidLoad() {
               showModal()
        }
        func showModal() {
              let modalViewController = ModalViewController()
              modalViewController.modalPresentationStyle = .OverCurrentContext
              present(modalViewController, animated: true, completion: nil)
        }
    }
    class ModalViewController: UIViewController {
        override func viewDidLoad() {
            view.backgroundColor = UIColor.clear
            view.isOpaque = false
        }
    }
    Ответ написан
    Комментировать
  • Как добавить Collection View после конца прокрутки Table View?

    maximglobak
    @maximglobak
    iOS developer
    Заверни коллекцию вью в ячейку и добавь или в футер таблицы, или в футер секции, или в последнюю ячейку.
    Для этого смотри как делать кастомные ячейки и таблицы с несколькими типами ячеек.
    Ответ написан
    7 комментариев
  • Корректная настройка Nginx в Mac OS?

    Lynn
    @Lynn
    nginx, js, css
    Ваш nginx слушает порт 80, а вы продолжаете обращаться к порту 8888, т.е. ходите не в nginx, а напрямую в приложение.

    Ошибки от nginx -t, потому что в nginx проверяет не только синтаксис, но и доступность файлов логов, а у вашего пользователя очевидно нет прав на запись в файл usr/local/var/log/nginx/error.log. Поэтому проверка конфига, как и перезагрузка должна производиться с sudo.

    sudo nginx -t
    Ответ написан
    Комментировать
  • Как нынче модно делать Constraints в коде?

    tikhonov666
    @tikhonov666
    iOS, Swift, Objective-C
    LayoutAnchor пришел с iOS 9, значит если у вас поддержка с iOS 9, то юзайте его, он прост в написании и более читабельный.

    NSLayoutConstraint vs Visual Format Language
    Я предпочтение отдавал первому, второй для меня был менее понятен, да и ошибку там проще допустить.

    StackView используют, но без фанатизма, особенно в ячейках таблицы.
    А что не так с Traits? Если у вас есть поддержка несколько ориентаций, то используйте.
    Ответ написан
    1 комментарий
  • Что означают 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 комментарий
  • Что означают A.Type и A.self, где A - некий класс, в языке Swift?

    tikhonov666
    @tikhonov666
    iOS, Swift, Objective-C
    Вот пример

    class Person {
        var name: String
         required init(name: String) {
            self.name = name
        }
    }
    
    func printPersonName(PersonType: Person.Type) {
        // PersonType - Person.Type
        let person = PersonType.init(name: "Name")
        print(person.name)
    }
    
    let PersonType = Person.self // Person.Type
    printPersonName(PersonType: PersonType)


    A.Type - используется для указания типа переменной в сигнатуре функции.
    A.self - используется непосредственно в коде как обычная переменная.
    Ответ написан
    2 комментария
  • В чём разница между Key-Value Observing и Notifications?

    briahas
    @briahas
    ObjC, Swift, Python
    При KVO - обозреватель в курсе об обозреваемом объекте

    При Notifications - обозреватель в курсе лишь о названии нотификации, и абсолютно не имеет понятия кто ее отослал.

    Что из этого вписывается в твою архитектуру то и используй.

    НО! Мое мнение - лучше избегать нотификаций и кво во всех проявлениях кроме тех где они вшиты в систему и без них ни как. Потому что, они добавляют запутанности логике. Нет наглядности в том "кто вызвал эту нотификацию?", "кто изменил эту проперти?"
    Ответ написан
    Комментировать
  • Не появляется по свайпу RootViewController в SplitViewController при установки делагата?

    tikhonov666
    @tikhonov666
    iOS, Swift, Objective-C
    Возможно ты как-то неправильно переопределяешь методы делегата.
    Для эксперимента создай пустой master-detail проект и проверь, как себя ведет приложения, если ты ставишь или не ставишь делегат.
    Ответ написан
    4 комментария
  • Как сделать Segue Present Modally из TabBarController?

    tikhonov666
    @tikhonov666
    iOS, Swift, Objective-C
    Вы можете достучаться до UITabBarController из вью контроллера

    viewController.tabBarController.present(..)

    https://developer.apple.com/documentation/uikit/ui...
    Ответ написан
    2 комментария