Пользователь пока ничего не рассказал о себе

Достижения

Все достижения (14)

Наибольший вклад в теги

Все теги (76)

Лучшие ответы пользователя

Все ответы (104)
  • Заказчик вместо обещаных 3 часов моего времени делает правки уже 4й день, что делать?

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

    Так же, на oDesk есть правило, по которому заказчик не может быть агентством, если он зарегистрировался как заказчик. Если он «проксирует» работу, то он — агенство, а агенство не может публиковать заказы. Он нарушает правила. Это ещё один момент, который вам может помочь, если вы вступите с клиентом в какой-то диспут. Опять же, важно, чтобы он упоминал в личной переписке на сайте биржи, что он, дескать, посредник, а не заказчик — если он этого не упоминал, то нужно его как-то на это развести.

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

    Главное, и не только в подобных ситуациях, не тянуть резину. Чем вы будете мягче и податливее, чем дольше вы будете откладывать «неприятные» для клиента вопросы, тем чаще этим будут пользоваться окружающие, продавливая вас насколько это возможно. Это не значит, что нужно всем направо и налево грубить и посылать, это значит, что нужно сразу же сообщать окружающим, что вас что-то не устраивает — вежливо, но твёрдо.

    Я могу только посочувствовать вашей ситуации, но рано или поздно каждый человек с таким сталкивается. Со временем просто развивается чуйка, которая позволяет сразу видеть что конкретный проект публикует неадекватный клиент. Как говорил alexgilev (полчаса назад :) ), всякие фразы, вроде: «срочно», «мне мой знакомый программист сказал, что тут дел — на пять минут», «час-два для тех, кто в теме», «быстрые деньги» и т.п. — это один из признаков неадекватности.
    Ответ написан
  • Как перейти по URL Java?

    Можно воспользоваться методом encode класса URLEncoder. Только нужно не всю строку с адресом перегонять через encode, а только GET-переменные. Можно так сделать:

    try {
        Desktop d=Desktop.getDesktop();
    
        d.browse(new URI(
            String.format( 
                "http://www.google.ru/search?sourceid=chrome&ie=UTF-8&q=%s", 
                URLEncoder.encode( "запрос с кучей пробелов" , "UTF8" )
            )
        ));
    } catch (IOException ioe) {
        ioe.printStackTrace();
    } catch (URISyntaxException use) {
        use.printStackTrace();
    }
    Ответ написан
  • Путь из фрилансера в аутсорс контору. Как?

    Когда начинают закидывать работой, лучший способ — повышать цену.

    Кстати, у многих заказчиков на одеске совершенно нормальная практика: платить 5-10 долларов программистам из Индии, 15-25 долларов — программистам из России и 50-60 долларов — программистам из США. Даже если сложность работы совершенно одинаковая в каждом случае.

    Вот тот владелец студии, которого вам удалось допросить, просто притворился американским программистом. И совершенно логично и нормально, что ему платят в несколько раз больше, чем другим, ведь все думают, что он из США, ведь у него там офис и реклама. А он в России платит намного меньшие ставки местным работникам. При этом, для этих работников ставки выглядят вполне прилично по местным меркам. А себе просто забирает всё, что осталось после расходов.

    Я пишу как обычный мелкий фрилансер — меня пока что не заваливают там работой. Но я просто читаю и анализирую очень много предложений. Именно отсюда моё мнение, что дела обстоят именно так. Кстати, очень часто видел — прямым текстом пишут, что будут платить максимум 20 долларов, но «если вы из США, то вот вам ссылка на вакансию для тех, кто из США». Открываешь ссылку, а там цены ровно в два раза выше при тех же требованиях.

    Вообще, это очень сложный момент, когда начинаешь себе в пару/триплет/квартет брать дополнительных людей. Ты и так делаешь кучу работы, а тут на тебя сваливаются ещё и организационные моменты, а иногда ещё и бессонные ночи, потому что твой напарник пропал/запил/бабушка заболела, а работу нужно делать, потому что за сделанную работу именно ты отвечаешь. Получается, что ты тратишь на работу ещё больше времени, но денег больше уже не получаешь. И это уже не «работать по 4 часа в день, а всё остальное время заниматься своими личными делами», о котором мечтают, когда начинают заниматься фрилансом.

    Лучше всего копить деньги, а потом их крутить — вложить в стартап; отдать в брокерскую контору (не самому играть, а отдать им и пусть с ними крутятся и платят тебе обещанные 100% в год); положить в банк под проценты; создать контентный сайт, нанять туда копирайтера средней руки, вложиться в раскрутку и повесить туда рекламу, которая в итоге всё будет окупать и т.д. — в общем, все те вещи, в которых тебе нужно принимать минимальное участие. Это всё рисково, конечно, но если вкладывать их в несколько разных мест, то больше шансов, что они будут приносить доход, а не просто сгорать.
    Ответ написан
  • Как передать значение переменной из php-скрипта в javascript?

    Первый способ: Отдельный AJAX-запрос к PHP-файлу, который вернёт что-нибудь вроде JSON-данных, которые потом будут доступны из JS.

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

    PHP-файл:
    <?php
    $a = 'text for js_variable';
    ?>
    <!DOCTYPE html>
    <html>
      <head>
        <script>
          //Определяется переменная, которая будет доступна для 
          // всех JavaScript, подключаемых на данной странице
          var js_variable = '<?php echo $a; ?>';
        </script>
        <!-- 
          В файле /scripts/myscript.js происходит обращение 
          к переменной js_variable 
        -->
        <script src="/scripts/myscript.js"></script>
      </head>
      <body>blah-blah-blah</body>
    </html>


    Файл /scripts/myscript.js:
    // Выскочит алерт с текстом «text for js_variable».
    alert(js_variable);


    Вот. В HEAD-части HTML-страницы вы определяете переменную, которая будет доступна для остального JS-кода. Главное — нужно её определять до того, как будут подключены скрипты, которые будут её использовать.

    Третий способ: Если ваш web-сервер — Apache, то можно добавить в .htaccess в корне сайта такие строки:
    AddType application/x-httpd-php .js
    AddHandler x-httpd-php5 .js
    
    <FilesMatch "\.js$">
    SetHandler application/x-httpd-php
    </FilesMatch>


    Тогда вы сможете прямо в JS-файлах выполнять PHP-код. Но выполняться он будет только в тех JS-файлах, которые находятся в папке с сайтом. Если будут загружаться скрипты со сторонних ресурсов, там PHP-код работать не будет.
    Ответ написан
  • Как можно оптимизировать мой код php+mysql?

    Можно не только сократить количество запросов, но и сделать код немного аккуратнее и безопаснее.

    <?php
    // Эта строчка — где-то в другом файле — где в данный момент инициализируется соединение с БД
    $db = new PDO('mysql:dbname=testdb;host=127.0.0.1', 'username', 'password');
    
    $sth = $db->prepare("
        SELECT 
            t.`id`, 
            DATE_FORMAT(rt.`data`, '%d.%m.%Y') remont_date,
            ma.`name` marka,
            mo.`name` model,
            t.`serial`,
            rt.`work_id`,
            rt.`sum`
        FROM `tech` t 
        LEFT JOIN `remont_tech` rt ON rt.`tech_id` = t.`id` AND rt.`status` <> 'delete'
        LEFT JOIN `marka` ma ON ma.`marka` = t.`marka`
        LEFT JOIN `model` mo ON mo.`id` = t.`model`
        WHERE 
            t.`user` = ? AND
            TIMESTAMPDIFF(DAY, rt.`data`, NOW()) BETWEEN 0 AND 30
        ORDER BY rt.`data` DESC
    ");
    $sth->execute(array($myrow['id']));
    $result = $sth->fetchAll();
    ?>
    <table>
        <tr>
            <th>№</th>
            <th>Дата</th>
            <th>Оборудование</th>
            <th>Проделанная работа</th>
            <th>Сумма</th>
        </tr>
        <?php if (!count($result)) : ?> 
            <tr>
                <td>0</td>
                <td colspan="4">Ничего не найдено.</td>
            </tr>
        <?php else : ?> 
            <?php $summ = 0; ?>
            <?php foreach ($result as $key => $row) : ?> 
                <tr>
                    <td><?= $key+1 ?></td>
                    <td><?= $row['remont_date'] ?></td>
                    <td><?= sprintf('%s %s(%s)', $row['marka'], $row['model'], $row['serial']) ?></td>
                    <td><?= $row['work_id'] ?></td>
                    <td><?= number_format($row['sum'], 0, ',', ' ') ?> руб.</td>
                </tr>
                <?php $summ += $row['sum']; ?>
            <?php endforeach; ?> 
            <tr>
                <td colspan="3"></td>
                <td><b>ИТОГО:</b></td>
                <td><b><?= number_format($summ, 0, ',', ' ') ?> руб.</b></td>
            </tr>
        <?php endif; ?> 
    </table>


    А всякие: рамки таблицы, ширины ячеек и прочее — лучше в файле со стилями прописывать, а не инлайном. Их там гораздо проще обслуживать.
    Ответ написан

Лучшие вопросы пользователя

Все вопросы (2)