Профиль пользователя заблокирован сроком с 17 мая 2024 г. по 17 мая 2025 г. по причине: нарушение правил сайта
  • Сайт для бесплатной отправки СМС с API?

    thewind
    @thewind
    php программист, front / backend developer
    Как вы хотите, чтобы смс отправлялись бесплатно? В конечном итоге все равно надо платить оператору за использование шлюза, а там исключений нет. Поэтому кто будет предлагать такие услуги, в ущерб себе?
    Ответ написан
    2 комментария
  • Зачем нужны отдельные классы для работы с БД?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    На самом деле это интересный вопрос. А, точнее, два: зачем нужен такой класс, и зачем их пишут.
    Ответ на первый становится очевиден, когда начинаешь не смотреть на код, а писать его ;)
    Практически все библиотеки, представленные в РНР, представляют в пользование программиста довольно низкоуровневые функции, которые позволяют, с одной стороны, довольно гибко управлять процессом, но с другой - делают этот процесс ну очень многословным. Самый яркий пример - CURL. Никто, находясь в здравом уме, не будет писать все время эти бесконечные curlopt. Надо пилить библиотеку, которая реализует стандартные методы пост, гет за один вызов, и только для исключительных случаев позволяет задать кастомные параметры.

    То же самое касается и работы с БД. К примеру, очень часто нам бывает нужно получить из БД массив. Сколько строк нужно написать для этого? Классическим говнокодом - 5:
    $ret = array();
    $res = mysql_query();
    while ($row = mysql_fetch_assoc($res)) {
        $ret[] = $row;
    }

    И такой код надо написать раз 15-20 за приложение. У программиста сразу руки зачешутся уничтожить этот повторяющийся код и написать функцию, которой передаешь запрос, а получаешь массив. За 1 вызов. Вот для этого библиотеки и пишут.

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

    Возьмем для примера код примера из мануала. Даже выкинув из него очевидные глупости, мы получаем пол-дюжины строк кода. Это на ОДИН запрос.
    if ($stmt = $mysqli->prepare("SELECT District FROM City WHERE Name=?")) {
        $stmt->bind_param("s", $city);
        $stmt->execute();
        $stmt->bind_result($district);
        $stmt->fetch();
    }

    И это все - чтобы получить единственную строчку!

    В то время как с помощью (нормальной) библиотеки вся работа с БД сведется к 1 (одной) строчке, а все необходимые телодвижения будут выполнены библиотекой автоматически:
    $distr = $db->getOne("SELECT District FROM City WHERE Name=?", $city);

    Теперь перейдем ко второму вопрос - зачем их пишут.
    Самый основной мотив - "шоб було!" "У всех есть - значит, и у меня будет!". При этом, подходя к написанию библиотеки, новички наступают на одни и те же грабли.
    Чаще всего, из-за недостатка опыта авторов, код сокращается только для самых примитивных запросов. Но при этом работа с нестандартными запросами превращается в ад. Но самое ужасное - практически никогда такие самописные библиотеки не поддерживают работу с подготовленными выражениями. А это должно быть их главной фичей, без которых ценность сразу стремится к нулю. А точнее, даже к минусу, потому что инъекции. Ну и по мелочи: к примеру, если в коде действительно написано $db->FetchArray(); - то это ужас, летящий на крыльях ночи, потраченной на отлов неочевидных ошибок .
    Ответ написан
  • Как писать техническую документацию к софту?

    @invisible_me
    Начинающий web-разработчик
    Можно вспомнить курсовой по программированию.

    Как было у нас в учебном заведении, документация делится на 2 части.
    1. Общая
    2. Специальная

    Общая часть - описывается используемое ПО для разработки продукта.

    Спецаильная часть - описываются, все участки программы. Макро блок-схема, Блок-схемы проблемных участков. Листинг программы. Описание каждой функции, ее типы и т.д. и т.п. ER-диаграмма, связь таблиц БД. Сколько полей в таблице, описывается каждое поле таблицы, его тип и т.д и т.п

    Возможно стандарты разные.
    Ответ написан
    Комментировать
  • Как вы относитесь к тестовому заданию ДО собеседования?

    saboteur_kiev
    @saboteur_kiev Куратор тега Программирование
    software engineer
    Нормально отношусь, если это нормальное тестовое задание (по условию видно, что это тест, а не попытка получить что-то нашару)
    Ответ написан
    Комментировать
  • Как вы относитесь к тестовому заданию ДО собеседования?

    @raiboon
    У каждого свой опыт, но в общем случае, если тратить время тимлида на собеседование каждого, кто прислал резюме - то у него не оcтанется времени на работу. А это минимальная фильтрация.
    Ответ написан
    3 комментария
  • Правда ли, что на собеседованиях в мировых конторах на позицию JavaScript задачи решают на С или С++?

    @mamkaololosha
    Если попросят решить сферическую абстрактную задачу по оптимизации перебора или граф отсортировать, то проще написать без ошибок на какой-нибудь псевдокоде, чем на С или Javascript. И скорее всего имелось в виду С-подобным синтаксисом язык (C-like), а кандидат волновался и подумал, что это о языке из группы С++.
    Ответ написан
    Комментировать
  • Правда ли, что на собеседованиях в мировых конторах на позицию JavaScript задачи решают на С или С++?

    SowingSadness
    @SowingSadness
    web-разработчик
    Если идёте на позицию JavaScript разработчика то и будут вас спрашивать по JavaScript.
    Но голый JS как правило редко нужен, обычно его спрашивают вместе с фреймворками или продуктами, такими как nodejs, knockoutjs, jquery, requirejs и т.п.
    А так же зачастую спрашивают знание css и html.
    Ответ написан
    Комментировать
  • Правда ли, что на собеседованиях в мировых конторах на позицию JavaScript задачи решают на С или С++?

    webinar
    @webinar
    Учим yii: https://youtu.be/-WRMlGHLgRg
    Это зависит от компании и об этом пишут в требованиях. Встречал требования к C#.
    Хотя там, так и у нас, идиотизма хватает.
    К тому же, те кто не прошел собеседование, всегда придумывают интересные оправдания, не верьте форумам на 100%.
    Ответ написан
    1 комментарий
  • Как перевести деньги на чужую кредитку?

    Menaskop
    @Menaskop
    Анархист. Работаю в Сети. Живу в Сибири.
    Добрый день, оплатить можно с помощью любого p2p сервиса, например
    01. Альфа банк - alfabank.ru/retail/cardtocard
    02. Тинькофф - https://www.tinkoff.ru/cardtocard/
    03. Русский стандарт - www.rsb.ru/payments/perevody-na-kartu

    Не обязательно, чтобы Вашим банком был 1 из 3х указанных, главное, чтобы карта была эмитирована в РФ или в 1й из стран из списка (есть на сайте, по сути - СНГ + немного Европы). Комиссию за это спишут ок. 2% (+ 20 руб. для РФ и 40 руб. для других стран).

    Конкретней смогу ответить, если скажите страну выпуска карты и страну карты получателя.

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

    gbg
    @gbg Куратор тега Компьютерные сети
    Любые ответы на любые вопросы
    Scorpi и Павел Китьян нужно срочно начать читать замечательный учебник Снейдера - Эффективное программирование TCP/IP
    1004494083.jpg

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

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

    @Evsign
    Договор подряда + NDA + как советовал Дмитрий Энтелис - тестовые счета, а на продакшене всё менять на действующие.
    Ответ написан
    4 комментария
  • Как Яндекс узнаёт реальный IP?

    itvdonsk
    @itvdonsk
    Android Developer
    Значит обращение к Яндексу идет не через 22.22.22, а через 11.11.11. Все зависит от маршрутизации на сервере.
    Яндекс смотрит не на домены, а на IP с которого соединяются.
    Ответ написан
    2 комментария
  • Как правильно вставить данные в MySQL c помощью php?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    1. Добавить в код две переменные, $db_db с именем базы данных и $db_charset с кодировкой своего сайта (скорее всего utf8)
    2. исправить запрос. Либо вставлять все поля, какие есть в таблице, либо перечислить вставляемые поля явно.
    3. Прочитать про PDO
    4. в ../template/sql-connect.php поместить код
    $dsn = "mysql:host=$db_host;dbname=$db_db;charset=$db_charset";
    $opt = array(
        PDO::ATTR_ERRMODE            => PDO::ERRMODE_EXCEPTION,
        PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC
    );
    $db = new PDO($dsn, $db_user, $db_pass, $opt);

    5. В обработчике формы написать
    $query = "INSERT INTO users (username, email,company)VALUES (?,?,?)";
    $db->prepare($sql)->execute([$userName, $email, $company]);
    Ответ написан
    Комментировать
  • Как склонять слова по падежам в PHP?

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега PHP
    Все, что заканчивается на 1, кроме 11 - "Поиск среди N товаров".

    private static function pluralType($n)
    {
        return $n != 11 && $n % 10 == 1 ? 0 : 1;
    }
    Ответ написан
    8 комментариев
  • Как передать данные между ios приложениями?

    alexyat
    @alexyat
    iOS Developer
    Все достаточно просто, приложение которе передает данные должно создать
    UIDocumentInteractionController;

    UIDocumentInteractionController *_controller;
    
    if(!_controller)
                _controller = [[UIDocumentInteractionController alloc]init];
            _controller.delegate = self;
            NSURL *documentURL = @"тут должен быть урл в файловой системе, в который записаны данные которые нужно передать";
            _controller.URL = documentURL;
            if(![_controller presentOpenInMenuFromRect:cell.frame inView:self animated:YES])
            {
                NSLog(@"can't open in another app");
            }
            else
                NSLog(@"Open in another app");
    
    // ну и делигат методы
    
    - (UIViewController *)documentInteractionControllerViewControllerForPreview:(UIDocumentInteractionController *)controller {
        
        return  self;// это вьюв контроллер в котором будет всплывающее меню с выбором аппа который будет открывать.
    }
    
    - (void)documentInteractionController:(UIDocumentInteractionController *)controller willBeginSendingToApplication:(NSString *)application {
        
        NSLog(@"Starting to send this puppy to %@", application);
    }
    
    - (void)documentInteractionController:(UIDocumentInteractionController *)controller didEndSendingToApplication:(NSString *)application {
        
        NSLog(@"We're done sending the document.");
    }


    в принимающем аппе нужно в Info.plist добавить Exported Type UTIs, и добавить при запуске аппа обработку launchOptions

    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions


    что-то типа вот такого

    NSURL *url = (NSURL *)[launchOptions valueForKey:UIApplicationLaunchOptionsURLKey];
    NSData* data = [NSData dataWithContentsOfURL:url];


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

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

    BuriK666
    @BuriK666
    Компьютерный псих
    if(preg_match('#^/item/[0-9]/.+$#is',$_SERVER['REQUEST_URI'])){
    Ответ написан
    Комментировать
  • Можно ли в теле массива использовать условия для добавления элементов?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Оставляя за скобками синтаксическую осмысленность этого кода, зададимся вопросом осмысленности результата
    Зачем тебе массив вида
    $a = [
        'a' => 'test',
        'b' => 'test2',
        '',
    ];

    ?

    И кто мешает просто добавлять в массив элементы по условию?
    $a = [
        'a' => 'test',
        'b' => 'test2',
    ];
    !empty($x) ? $a['c'] => 'test3';
    Ответ написан
    Комментировать
  • Что лучше табы или пробелы?

    @slvABTOP
    psr-2 говорит про 4 пробела. Может стоит прислушаться?
    Ответ написан
    Комментировать
  • PHP запрос при наведении мыши. Как сделать?

    eucalipt
    @eucalipt
    Самоделкин.
    В написанном использую JQuery.
    $element = "путь к элементу (CSS)";
    
    $($element).on("mouseover", function() {
    $.ajax({
    			type: /* post или get */,
    		  url: /* путь к php файлу */,
    			data: /* данные, которые нужно послать скрипту (объект) */,
    		  dataType: /* json | text | html */,
    		  success: function(answ) {
    				
    				// ответ с сервера посылаем простым выводом (print или echo в php) и он записывается в переменную answ
    				
    		  }
    		});
    });
    Ответ написан
    5 комментариев
  • Напишите сайты для поиска фрилансеров?

    tin-iven
    @tin-iven
    Фрилансер до костей
    Других вариантов в русскоязычном сегменте нет:
    - freelansim.ru
    - fl.ru
    - weblancer.net
    - freelancehunt.com
    - freelance.ru
    Ответ написан
    1 комментарий