601

(8 відповідей, залишених у *nix)

під яким юзером серв, чмод папки?

602

(19 відповідей, залишених у PHP)

хочу трохи сказати про відображення(mvc)
деколи, коли дивившся в вю файли, плакати хочеться.
приклад з проекту, який попався мені.

        <div><?=$doc['text5']?></div><br>
        if(is_array($files)){
            ?><b>Прикреплённые файлы:</b><br>
            <table width="100%"><?
            foreach($files as $k => $file){
                ?><tr>
                        <td valign="top" width="31">
                            <img src="images/icon-pdf.png">
                        </td>
                        <td valign="top">
                            <i><a href="<?=ADMIN_URL.$file['path']?>" target="_blank"><? if(!empty($file['description'])){echo $file['description'];}else{echo $file['name'];}?></a></i>
                        </td>
                </tr><?
            }
            ?></table><?
        }
    ?>

Використавши альтернативний синтаксис PHP, виглядає більш понятніше :)

        <div>
            <?=$doc['text5']?>
        </div>
        <br>
        <?if(is_array($files)):?>
            <b>Прикреплённые файлы:</b><br>
            <table width="100%">
                <?foreach($files as $k => $file):?>
                <tr>
                    <td valign="top" width="31">
                        <img src="images/icon-pdf.png">
                    </td>
                    <td valign="top">
                        <i>
                            <a href="<?=ADMIN_URL.$file['path']?>" target="_blank">
                                <? if(!empty($file['description'])):?>
                                    <?=$file['description']?>
                                <?else:?>
                                    <?=$file['name']?>
                                <?endif;?>
                            </a>
                        </i>
                    </td>
                </tr>
            <?endforeach;?>
            </table>
        <?endif;?>

Тому будьте мужиками, юзайте альтернативний синтаксис, бле*ть!

603

(22 відповідей, залишених у Інше)

Висновок: Для вивчення програмування Делфі має переваги над С++ через єдину версію синтаксису і відсутність внутрішніх протиріч. 

http://cs10826.сайт-злодій/u5829147/153300164/x_15d959ba.jpg

604

(12 відповідей, залишених у Ruby)

bunyk написав:
miroslav.chandler написав:

О Торнадо)

Я в Торнадо не розбираюсь. Точніше розбираюсь але лише два дні, ще до кінця не розібрався. :)

І взагалі, розділ то про Рубі. Любителів Рубі тут щось замало.  :)

Ммм, на сайті

Працює це чудо за допомогою Python3 і Tornado.

Чи я шось не зрозумів?
Хедери тоже про торнадо гворять. - Server    TornadoServer/2.3

605

(12 відповідей, залишених у Ruby)

bunyk написав:

Ну, от: http://bunyk.t.proxylocal.com/ Я сидів, і довгих 10 секунд думав де я міг там зробити діру. Жодної не знайшов. Тому якщо придумаєте як закинути туди какашку - поділіться способом.

Звісно і функціоналу там 0, але на те ще треба час.

О Торнадо)
Завжди було інтересно, як в торнадо, виконати синхронний код. Наприклад, приходить до мене запит і я маю зробити деякі дії, які заблокують луп (забудем на мить про асинхронні ліби).
Перше що в голову приходить, так це обробляти в окремому потоці, але якщо буде вилика кількість запитів для кожного тред ми не зробимо. Зразу витікає рішення - пул потоків, але також, при високій нагрузці, іншим користувачам прийдеться чекати, коли до них дійде їхня черга.

606

(9 відповідей, залишених у Оцінка сайтів)

uasc.org.ua - рекомендую)

607

(22 відповідей, залишених у Інше)

У Вас хоча б делфі вивчають...

За 3 роки коледжу, на "іт" спеціальності, я зрозумів хібашо, шо зря я туда поступив)

Тільки самостійне вичвчення, тільки хардкор!

608

(12 відповідей, залишених у Ruby)

Діло якраз в "поміститься".
Шось мені підказує, шо весь процес маршрутизаці, через рубі, та ше й вузький канал, як для серверу, ні до чого доброго не приведе, принаймні користувачів. Але навіть якщо сайт якимось чином завоює популярність, довго чекати шо б він ліг, не треба буде (:

Тому карще економити какашки і міняти їх на вдс :D

609

(12 відповідей, залишених у Ruby)

Нова акція - какашка в обмін на пончик!

610

(768 відповідей, залишених у Організація роботи форуму)

шось не найшов тег для закреслення тексту. не комільфо)

611

(768 відповідей, залишених у Організація роботи форуму)

mrChex написав:

І да, круто що пітону все більше. Неймовірна річ. Хоча круто що є PHP, повинен же я с когось знущатись типу: "чувак, ты этот функционал 2 дня писал? Двести строк? Хм, гляди, а в питоне с джангой это делается за 4 минуты в 10 строках" :) такє

Ггг.
На PHP з Yii, всьо тоже вже давно робитися в 10 строках за 4 хвилини ;)
Yii місцями краще джанги

612

(12 відповідей, залишених у Ruby)

Чую багато там не поміститься)

613

(6 відповідей, залишених у Системи контролю версій (SCM, VCS))

Напишу капітанську статтю як користуватися гітом. Можливо комусь пригодиться

Дисклеймер
Не претендую на оригінальність і правильність, просто ділюся досвідом

На нашому r2d2 дебіанчик :3

1) Ставим git

#server
apt-get install git git-core

#client
apt-get install git

Як відомо програміст це суміш логіки і ледарства, тому трошки полегшимо собі життя аутинтифікуючись на сервері через ключі(authorized keys).

2)Впевнимося що у вас є / нема ключів.

#local
ls ~/.ssh #папка по замовчуванню

Якщо в вас ця папка не пуста і містить в собі (зазвичай) id_rsa  id_rsa.pub, тоді переходьте до 4 пункту.

3)Якщо нема, треба створити

#local
ssh-keygen

В вас спитають місце розташування і пароль, який потрібно буде ввести, кожен раз, коли ви будете авторизуватися по ключах, можете залишити це поле пустим.
Далі пару слів про ключі.
id_rsa.pub - публічний ключ.
id_rsa - приватний ключ, вкрадуть, буде лихо (:
Тому.

chmod 700 ./.ssh
chmod 600 ./.ssh/id_rsa

4)Далі налаштуєм сервер.

#server
adduser git
su git
cd
mkdir .ssh

Далі нам порібно id_rsa.pub, який ми щойно згенерували, занести в файл authorized_keys.
Переносим його на сервер і

#server
cat id_rsa.pub >> ~/.ssh/authorized_keys

chown -R git ~/.ssh
chmod 700 ~/.ssh/
chmod 600 ~/.ssh/authorized_keys

Виходимо з сесії юзера

#server
exit

5)Провіряєм

#local
ssh git@ip

Вас має пуститина сервер, без пароля. Якщо щось пішло не так, дивимся конфіг

nano /etc/ssh/ssh_config
#якщо стоїть no, міняємо на yes

RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys

Ящо це не вирішило проблему, дивимся /var/log/auth.log

6)Далі заради тої ж безпеки, поміняємо оболонку на git-shell, яка буде дозволяти виконувати операції тільки з гітом.

#server
nano /etc/passwd
#находимо нашого користувача
git:x:1001:1002:,,,:/home/git:/bin/bash
# і заміняємо
git:x:1001:1002:,,,:/home/git:/usr/bin/git-shell

7)Тепер знову протестуємо

ssh git@-ip
bla-bla
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Mon Aug date from local-ip
fatal: What do you think I am? A shell?
Connection to ip closed.

fatal: What do you think I am? A shell?

Тільки тролфейса бракує :D


8)Це означає шо в нас все норма, тому налаштуєм git.

git config --global user.name "ololo"
git config --global user.email ololo@gmailcom

Тепер можна гітити.
8)Базовий лік-без. (для себе використовую такий метод)

Допустимо, в нас є сайт, який ми локально розробляємо і продакшн, на якому цей сайт крутиться.
Наша задача, налаштувати git, для мінімального деплою.

#server
cd /home
mkdir site.git
cd site.git
git init --bare

Тут ми ініціалізували bare (пустий) репозиторій.
Далі перейдем в дерикторію, в якій розміщується сайт.

#server
cd /var/www/site
git init .
git remote add orgin /home/site.git

Тут ми ініціалізували репозиторій і зробили "ссилку" на наш бейр.

Далі шаманим на локалці

#local
cd /var/www/site-dev
git init .
git remote add orgin git@ip:/home/site.git

Тепер весь мед.

Коли ми закінчили процес розробки і хочемо відправити зміни на сервер

#local
git add .
git commit -m"fix"
git push orgin master

Індексуємо, комітимо і відправляємо на сервер.

На сервері

#server
cd /var/www/site
git pull orgin master

І ваші зміни на продакшині.

Надіюся комусь буде корисно.

614

(34 відповідей, залишених у Хостинг та домени)

mrChex написав:
Hanter написав:

Що ж в мене питання. Як то можна зайти під рутом не знаючи пассворда?

поперше

cat /etc/passwd

и ось хеши паролів. Кожен може бачити. Якщо пароль 123456 -- досвідос усьому. Це примітив. Є витонченіщі методи.

Щодо причин... колись в гуглі таким чином ми шукали горе прогерів зі своїми сайтиками, що дозволяли завантажувати щось, або приймали у GET ім’я файлу. Не уявляєшь скільки таких сайтів з index.php

<?php
echo "<html>";
include("pages/{$_GET['file']}");
echp "</html>";

робимо так: http:/site/index.php?file=../../../../../../../../../../../../../../../etc/passwd

потім на сайтах шукаємо розшифровку хеша (до 8ми символів все все розшивровано) потім ssh під рутом. Просто так, по приколу :). Безкоштовний хостинг теж клали. Просто так ;)

В /etc/passwd вже сто років як нема хешів паролів.

615

(0 відповідей, залишених у PHP)

Сьогодні сталося так. що віджет CListView трохи не правильно відображав пагінацію. Тобто логіка відображення в данному випадку мені не підходила, бо мені треба було перенести пагінацію в інше місце.
Я вирішив це наступним чином.

Контроллер

        // метод повертає екземпляр класу CActiveDataProvider з потрібними мені опціями
        $regions = Users::getRegions(Yii::app()->user->id);
        // получаєм екземпляр класу CPagination, який сформував CActiveDataProvider
        $pagination = $regions->getPagination();
        $this->render('index',array(
            'dataProvider' => $regions,
             // передаєм його в вюху
            'pagination' => $pagination
        ));

Вюха.(CGridView мені не підходив)

<h1>Документооборот</h1>
<br>
<table class="table table-striped table-bordered table-condensed">
<?
$this->widget('zii.widgets.CListView', array(
    'dataProvider'=>$dataProvider,
    'itemView'=>'_table',
    // вимикаємо пагінацію в CListView
    'enablePagination' => false,
));
?>
</table>
<!-- Переносимо пагінацію в потрібне місце -->
<?php $this->widget('CLinkPager', array(
    'pages' => $pagination,
)) ?>

Надіюсь комусь буде корисно.

616

(1 відповідей, залишених у Бази даних)

Не було відповідної тему, тому напишу тут.
Є поле з типом текст, мені треба його сумувати, тобто якщо б це було інтове поле, тоді я б зробив так

select ... sum(ololo) ...

Як сумувати текстове поле в якому числа?

617

(21 відповідей, залишених у *nix)

Hanter написав:
miroslav.chandler написав:

Головне про заголовки не забудь (:

А я от і про них забув..

Подивився шо відсилає твій браузер.
Забий масив можливими комбінаціями юзер-агентів і тяни рандомно.

618

(144 відповідей, залишених у PHP)

В двох словах про вім?

619

(21 відповідей, залишених у *nix)

Головне про заголовки не забудь (:

620

(144 відповідей, залишених у PHP)

Hanter написав:
miroslav.chandler написав:
Voron написав:

мінус як на мене лише один - час від часу з'являється віконечко яке пропонує купити ліцензію

Так візьміть ліцензію (:

А ще краще переходьте на linux  і користуйтеся вільним ПЗ.

chandler@chandler ~ $ uname -a
Linux chandler 2.6.35-22-generic #35-Ubuntu SMP Sat Oct 16 20:36:48 UTC 2010 i686 GNU/Linux

ггг

а ще краще. купіть макентош і получайте задоволення від роботи.