За последние 24 часа нас посетили 142264 программиста и 2818 роботов. Сейчас ищут 1719 программистов ...

Тестовые задания

Тема в разделе "Беседы", создана пользователем nospiou, 6 мар 2018.

  1. nospiou

    nospiou Старожил

    С нами с:
    4 фев 2018
    Сообщения:
    3.400
    Симпатии:
    510
    @rishard Ох не быть тебе тимлидом. Не умеешь ты талант разглядеть)
     
  2. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Нет.

    За сосной лес не видишь потому что.
     
  3. nospiou

    nospiou Старожил

    С нами с:
    4 фев 2018
    Сообщения:
    3.400
    Симпатии:
    510
    Слишком уж он дремучий
     
  4. romach

    romach Старожил

    С нами с:
    26 окт 2013
    Сообщения:
    2.904
    Симпатии:
    719
    ох... я думал рельсы уже давно закопали и положили на могилку череп обезьянки ))
     
  5. rishard

    rishard Новичок

    С нами с:
    20 сен 2016
    Сообщения:
    228
    Симпатии:
    27
    разумеется, закопали.
    Пых эксгумировали, а рельсы на его место.

    разговор ни о чем, холивар для серча.... каждому свое, конечно, но все эти разговоры о "смерти" того или иного языка/фреймворка для меня всегда суть попытки переноса на логику технических абстракций - сугубо человеческих ярлыков. Да не обидится на меня @igordata , знаю его мнение на сей счет. Если попросту, не нужно дроч... т.е. прошу прощения, сублимировать - на профессиональный инструментарий, это далеко не альфа и омега в жизни. Фреймворк обновляется? - обновляется, ждем как раз 5.2. Апдейты минорные? - нет, ничего подобного. Ну и все, остальное демагогия.

    Кроме того, чтобы думать, надо знать. Коли уж тема о тестировании и тестах, вот щас и проверим... чем на рельсах заменить CURL, расскажи? в пыхе без него как без рук, а что с этим на rails? - крайне несложный вопрос, без подвохов (ни леса, ни сосен).
    --- Добавлено ---
    rishard,9 мин. назад

    время, время. Гугль тормозит нонче?
     
    #55 rishard, 9 мар 2018
    Последнее редактирование: 9 мар 2018
  6. romach

    romach Старожил

    С нами с:
    26 окт 2013
    Сообщения:
    2.904
    Симпатии:
    719
    Ну, начнем с того, что я ни разу не утверждал что работаю с рельсам, что очевидно из того что я написал. Ну а ответ прост: curl`ом, потому что к php он имеет отношение лишь наличием в нем обертки для libcurl. Уверен, для руби она тоже есть.

    p.s. и в php можно обойтись без curl`а. Внезапно )
     
  7. rishard

    rishard Новичок

    С нами с:
    20 сен 2016
    Сообщения:
    228
    Симпатии:
    27
    Ответ неверный, аргументация здесь. Неверный не потому, что не знаешь, а потому, что делаешь выводы на основе незнания. А это суть болтовня ни о чем.

    В качестве иллюстрации... или альтернативы... ну, php-программисты поймут, код примитивен, логика стереотипна, да и как она может быть иной в рамках одного и того же API... взгляните, написал как-то по приколу логику обновлялки резюме HH на пыхе и на рельсах. В оф. доках этого примера нет, ни первого ни второго, и сравнить любопытно: один в один те же яйца, но написаны по разному. Использовал typhoeus, напрямую "curl-ом", как видно из инфы по ссылке, нельзя.

    PHP:
    1. <?php
    2. $client_id = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX';
    3. $client_secret = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX';
    4.  
    5. if (empty($_GET['code'])) {
    6.     echo '<p><a href="https://hh.ru/oauth/authorize?response_type=code&client_id=' . $client_id . '">Обновить резюме</a></p>';
    7. } else {
    8.     if ($curl = curl_init()) {
    9.         curl_setopt($curl, CURLOPT_URL, 'https://hh.ru/oauth/token');
    10.         curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
    11.         curl_setopt($curl, CURLOPT_POSTFIELDS, "grant_type=authorization_code&client_id=" . $client_id . "&client_secret=" . $client_secret . "&code=" . $_GET['code']);
    12.         $out = curl_exec($curl);
    13.         curl_close($curl);
    14.     }
    15.     $token_json = json_decode($out);
    16.     $headers    = array(
    17.         'Authorization: Bearer ' . $token_json->access_token,
    18.         'User-Agent: Masterpro'
    19.     );
    20.     if ($curl = curl_init()) {
    21.         curl_setopt($curl, CURLOPT_URL, 'https://api.hh.ru/resumes/mine');
    22.         curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
    23.         curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
    24.         $out = curl_exec($curl);
    25.         curl_close($curl);
    26.     }
    27.     $resumes = json_decode($out);
    28.     echo '<strong>Статус обновлений резюме:</strong></br>';
    29.     foreach ($resumes->{'items'} as $item) {
    30.         if ($curl = curl_init()) {
    31.             curl_setopt($curl, CURLOPT_URL, 'https://api.hh.ru/resumes/' . $item->id . '/publish');
    32.             curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
    33.             curl_setopt($curl, CURLOPT_POST, true);
    34.             curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
    35.             $out = curl_exec($curl);
    36.             curl_close($curl);
    37.             if(empty($out)) {
    38.             echo 'Резюме ' . '"' . $item->title . '"' . ' успешно обновлено.</br>';
    39.             } else {
    40.             echo $out . '</br>';
    41.             echo 'Резюме ' . '"' . $item->title . '"' . ' было обновлено ' .($item->updated . '</br>');
    42.         }
    43.     }
    44. }
    45. }

    Код (Text):
    1. class HhcorrController < ApplicationController
    2.     def index
    3.          if params[:code].present?
    4.             id_hh = ENV['ID_HH_CORR'] #'*******************'
    5.             secret_hh = ENV['SECRET_HH_CORR'] #'*******************'
    6.                         response = Typhoeus::Request.post('https://hh.ru/oauth/token',
    7.                 params: { :grant_type => "authorization_code",
    8.                     :client_id => id_hh,
    9.                     :client_secret => secret_hh,
    10.                     :code => params[:code]
    11.                 }
    12.             )
    13.             hash = JSON.parse(response.body)
    14.  
    15.             response = Typhoeus::Request.get('https://api.hh.ru/negotiations/active?pages=1&per_page=15',
    16.                 method: :get,
    17.                 headers: { Authorization: "Bearer #{hash['access_token']}" }
    18.             )
    19.             @response = JSON.parse(response.body)
    20.  
    21.             response = Typhoeus::Request.get('https://api.hh.ru/resumes/mine',
    22.                 method: :get,
    23.                 headers: { Authorization: "Bearer #{hash['access_token']}" }
    24.             )
    25.             response = JSON.parse(response.body)
    26.             @response1 = []
    27.  
    28.             response['items'].each do |item|
    29.                 response = Typhoeus::Request.get('https://api.hh.ru/resumes/' + item['id'] + '/views?pages=1&per_page=5',
    30.                     method: :get,
    31.                     headers: { Authorization: "Bearer #{hash['access_token']}" }
    32.                 )
    33.  
    34.                 @response1 << JSON.parse(response.body)
    35.  
    36.             end
    37.         end
    38.     end
    39. end
    P.S. Кто сомневается, могу дать ссылку в вебе потестить. Резюме то на HH у всех есть, надо полагать. :)
     
  8. romach

    romach Старожил

    С нами с:
    26 окт 2013
    Сообщения:
    2.904
    Симпатии:
    719
    Что значит использовать "напрямую" нельзя?
     
  9. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Мы вам обязательно перезвоним.
     
  10. rishard

    rishard Новичок

    С нами с:
    20 сен 2016
    Сообщения:
    228
    Симпатии:
    27
    То и значит:
    Ruby's net/http is notorious for not having the friendliest API, but it isn't all that bad. Ruby has great gems like faraday, but in libraries and small utilities it's better to kill your dependencies and use what the stdlib provides.

    This tool turns a curl command into ruby (2.0+) code using net/http, blahblahblah.
     
  11. romach

    romach Старожил

    С нами с:
    26 окт 2013
    Сообщения:
    2.904
    Симпатии:
    719
    Ещё раз, чем пыховская обертка над libcurl принципиально отличается от руби-обертки над libcurl?
     
  12. rishard

    rishard Новичок

    С нами с:
    20 сен 2016
    Сообщения:
    228
    Симпатии:
    27
    ты формочку по ссылке видишь? по заморскому читать умеешь? пастишь curl туда и получаешь в ответ то, что приемлемо в рельсах, или используешь faraday / typhoeus. По другому никак.
    --- Добавлено ---
    Не веришь мне, взгляни на SO. Во всех без исключения случаях это самый авторитетный источник; для меня по крайней мере.
     
  13. nospiou

    nospiou Старожил

    С нами с:
    4 фев 2018
    Сообщения:
    3.400
    Симпатии:
    510
    Поработайте с nodejs возьмите какой нибудь sailsjs и перестаньте наконец плакаться) А лучший все равно python)
     
  14. romach

    romach Старожил

    С нами с:
    26 окт 2013
    Сообщения:
    2.904
    Симпатии:
    719
    Не более, чем википедия.
    Итак, typhoeus имеет в зависимостях ethon, который в свою очередь имеет в зависимостях ffi, а он подгружает libcurl. И в php и в ruby мы видим две реализации обертки над одним и тем же курлом. Вопрос повторить?
    --- Добавлено ---
    Я последнее время на ноде пишу больше, чем на пыхе )
     
  15. rishard

    rishard Новичок

    С нами с:
    20 сен 2016
    Сообщения:
    228
    Симпатии:
    27
    Нвчни с малого. А то тебя уже второй день тут домогают ответом на элементарный вопрос, а ты все про питон глаголешь. На форумах это еще туда-сюда проканает, а вот на собеседованиях забакланить не удастся: тесты проходили когда-то все тестировщики, оторвутся на тебе по полной, чистеньким уйти не удастся. Суровая и циничная проза жизни. )))

    вопрос уже прозвучал, ты на него не ответил, поскольку имя либы/пакета/гема не назвал. Можно и самому тот или иной экстеншен написать, но это не ответ и незачет: я спрашивал об актуальной конъюнктуре работы. Как и было сказано, вопрос преследовал целью понять, имеешь ли ты какое-то представление о рельсах, прежде чем их хоронить. Может, они три раза уже умерли, я спорить не хочу и не буду. И питон штука классная, кто бы спорил. Но чтобы обо всем об этом с уверенностью говорить, необходимо тему просекать, хотя бы в общих чертах. Мой близкий приятель, профессиональный devops со стажем работы в международных компаниях, недавно вознамерился рельсы изучить, и не сумел их на бубунту свою поставить, уж не знаю почему (всю сознательную жизнь я на редхате или rpm-based дистрах; на федорке установка рельсов - это реально полторы - две минуты максимум). Ну вот он три часа про"бался, а потом начал мне перлы задвигать, типа не рельсы и были, умерли, и тому подобное. Все это один в один напомнило мне эзоповскую басню под названием Лиса и виноград, если кто помнит.
     
  16. romach

    romach Старожил

    С нами с:
    26 окт 2013
    Сообщения:
    2.904
    Симпатии:
    719
    У меня всё. То что ты не знаешь, как и на основе чего работают гемы которые ты используешь - не мои проблемы.
     
  17. rishard

    rishard Новичок

    С нами с:
    20 сен 2016
    Сообщения:
    228
    Симпатии:
    27
    Сколько вам потребовалось для этого "все", ув. тестируемый? вы забыли о времени, и вот это и правда все. Да и с английским, смотрю, у вас проблемы... на моей памяти, утверждение о нецелесообразности использования фреймворка потребовало у вас значительно меньше времени.

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

    И настаиваю: "напрямую курлом", как я показал в своем php-коде - на рельсах нельзя, есть только обходные пути:

    Ruby's net/http is notorious for not having the friendliest API, but it isn't all that bad. Ruby has great gems like faraday, but in libraries and small utilities it's better to kill your dependencies and use what the stdlib provides.

    This tool turns a curl command into ruby (2.0+) code using net/http, blahblahblah.
     
    #67 rishard, 9 мар 2018
    Последнее редактирование: 9 мар 2018
  18. romach

    romach Старожил

    С нами с:
    26 окт 2013
    Сообщения:
    2.904
    Симпатии:
    719
    Ну, я потратил немало времени, что бы убедиться в том, что мой ответ был верен, а ты опять сказал чушь. Заодно освежил свои знания по руби. Но при чем тут это? И да, мой английский может и далек от идеала, но я хотя бы не пользуюсь гемами работающими на libcurl сам не зная этого и утверждая что в руби курла нет )
     
  19. nospiou

    nospiou Старожил

    С нами с:
    4 фев 2018
    Сообщения:
    3.400
    Симпатии:
    510
    @romach Вообщим самый лучший язык для парсинга чего то это php)) Хотя по факту python
     
  20. rishard

    rishard Новичок

    С нами с:
    20 сен 2016
    Сообщения:
    228
    Симпатии:
    27
    Процитирую-ка я самого себя любимого. :)

    Рельсы умерли, да здравствуют рельсы. Пока живы непрофессионализм и апломб разработчиков, так оно и будет. ))

    P.S. Да, а еще ты, как мне показалось, не вполне отчетливо видишь разницу между cURL и libcurl. Пролистай наверх, как звучал мой вопрос? - короче, мы вам позвоним, спасибо что пришли.
     
    #70 rishard, 9 мар 2018
    Последнее редактирование: 9 мар 2018
  21. romach

    romach Старожил

    С нами с:
    26 окт 2013
    Сообщения:
    2.904
    Симпатии:
    719
    Аргументация? Ты сам в своем же примере воспользовался популярным gem`ом использующим curl и ссылаешься на сайт, который транслирует синтаксис консольного curl в net/http. Что само по себе забавный аргумент, да. По факту: курл в руби можно заменить курлом, о чем я и говорил изначально и сразу. Всё.

    И да, я не утверждал что рельсы мертвы )

    Впрочем, утомило.
    --- Добавлено ---
    эм... а как же nightmarejs?
     
  22. rishard

    rishard Новичок

    С нами с:
    20 сен 2016
    Сообщения:
    228
    Симпатии:
    27
    Уважаемый соискатель, вы уходите от ответа.
    Вернее сказать, пытаетесь уйти.

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

    Подумайте спокойно, и не торопясь, прежде чем ответить, полистайте излюбленную вами википедию. А затем все же постарайтесь ответить: вы в самом деле не понимаете разницы между CURL и libcurl ?

    Тестировщик охотно распишется в собственной профессиональной несостоятельности, и извинится перед вами, если вы сумеете процитировать его вопрос о libcurl. Но если вы этого сделать не сумеете, и вопрос касался все-таки CURL, то сделать то же самое придется вам. Идет? Это вполне адекватная постановка вопроса и это честно: с вашей стороны прозвучало обвинение в профессиональной несостоятельности, которое априори придется доказывать техническим языком, в противном случае ваше заявление обернется против вас. Если не сумеете - "не ваши проблемы" автоматом становятся вашими, вы допустили грубую ошибку, которая не только делает невозможным оформление контракта между вами и нашей международной компанией... но и ставит под сомнение вашу профессиональную репутацию.

    Итак, жду ответа. CURL и libcurl для вас в самом деле настолько похожие сущности, что вы не видите между ними разницы? вас спрашивают, чем на рельсах заменить CURL (цитата), а вы в качестве ответа рассказываете нам о зависимостях гема и либе?
     
  23. nospiou

    nospiou Старожил

    С нами с:
    4 фев 2018
    Сообщения:
    3.400
    Симпатии:
    510
    @rishard
    Я как бы не вникал о чем вы но
    In order to use PHP's cURL functions you need to install the » libcurl package. PHP requires that you use libcurl 7.0.2-beta or higher. In PHP 4.2.3, you will need libcurl version 7.9.0 or higher. From PHP 4.3.0, you will need a libcurl version that's 7.9.8 or higher. PHP 5.0.0 requires a libcurl version 7.10.5 or greater.
    А вот с манула curl_reset — Reset all options of a libcurl session handle
    И вообще какая разница главное что б апи красивое было. Тоже мне проблему нашли.
     
    #73 nospiou, 10 мар 2018
    Последнее редактирование: 10 мар 2018
  24. romach

    romach Старожил

    С нами с:
    26 окт 2013
    Сообщения:
    2.904
    Симпатии:
    719
    Цитирую википедию: "Libcurl — это библиотека API для передачи, которую разработчики могут встроить в свои программы; cURL действует как автономная обёртка для библиотеки libcurl." И? Я в курсе этого.

    А вот что я действительно люблю, так это первоисточники. Переводить надо? https://curl.haxx.se/libcurl/bindings.html

    Уважаемый соискатель пока ещё может позволить себе оценивать тестировщика в равной степени. И скорее всего действительно уйдет.
    --- Добавлено ---
    ext-curl в php - это обертка над libcurl. Чем можно заменить одну обертку? Другой оберткой.
     
  25. nospiou

    nospiou Старожил

    С нами с:
    4 фев 2018
    Сообщения:
    3.400
    Симпатии:
    510
    @romach Почему с тобой все всегда спорят о 30кб трафика и 30кб оперативки?
    И вообще не пойму сути. Базовые функции все равно все на низкоуровневых языках.