• С каких книг/сайтов начать обучение, чтобы стать программистом за один год и работать в США? Выиграл Green Card?

    @switlle
    Если хотите быстро - найдите у себя в городе того, кто бы мог с Вами заниматься лично. И обязательно щедро платите. Тогда Вы сможете познакомиться с проблемами еще до долго до того как с ними с толкнетесь. Так обучение будет на много эффективнее и быстрее. Т.е. вы купите не только свой опыт но еще и часть чужого.
    Ответ написан
    3 комментария
  • Как Открыть-Изменить-Сохранить xls большого размера?

    @switlle
    Я недавно отвечал на вопрос о записи. К сожалению мой код только записывает большие файлы. Но делает это очень быстро.
    Ответь почитайте тут:
    Как сделать экспорт большой таблицы в Excel средствами PHP?
    Ответ написан
    2 комментария
  • Как сделать экспорт большой таблицы в Excel средствами PHP?

    @switlle
    Для решения этой задачи писал своё решение. Было просто огромное количество данных.
    Перепробовал все что было на тот момент. На решения данной задачи подойдут только SAX решения.
    Я думаю вы сможете поправить временные директории под себя и использовать мой код:

    <?php
    
    class Switlle_FastExcelWriter {
        private $workSheetHandler = null;
        private $stringsHandler = null;
    
        private $numRows = 0;
        private $curCel = 0;
        private $numStrings = 0;
        private $dirPath = '';
        private $outputFile = '';
        public function openExcelWriter($cols, $rows, $outputFile)
        {
            $dirPath = '/dev/shm/switlle-excel2007-test';
            @mkdir($dirPath);
            @mkdir($dirPath.'/data');
            @mkdir($dirPath.'/data/xl');
            @mkdir($dirPath.'/data/xl/worksheets');
            $this->dirPath = $dirPath;
            $this->outputFile = $outputFile;
            $this->workSheetHandler = fopen($dirPath.'/data/xl/worksheets/sheet1.xml', 'w+');
            $this->stringsHandler = fopen($dirPath.'/data/xl/sharedStrings.xml', 'w+');
    
            copy(dirname(__FILE__).'/FastExcelWriter/source-2007.xlsx', $dirPath.'/source.xlsx');
    
            fwrite($this->workSheetHandler, '<?xml version="1.0" encoding="UTF-8" standalone="yes"?'.
                '><worksheet xml:space="preserve"'.
                ' xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main"'.
                ' xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships">'.
                '<sheetPr><outlinePr summaryBelow="1" summaryRight="1"/></sheetPr>'.
                '<dimension ref="A1:'.chr(64+$cols).$rows.'"/><sheetViews>'.
                '<sheetView tabSelected="1" workbookViewId="0" showGridLines="true" showRowColHeaders="1"/>'.
                '</sheetViews><sheetFormatPr defaultRowHeight="12.75" outlineLevelRow="0" outlineLevelCol="0"/>'.
                '<sheetData>");');
            fwrite($this->stringsHandler, '<?xml version="1.0" encoding="UTF-8" standalone="yes"?'.
                '><sst xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" uniqueCount="'.($rows*$cols).'">');
        }
    
        public function writeRowStart()
        {
            $this->numRows++;
            fwrite($this->workSheetHandler, '<row r="'.$this->numRows.'" spans="1:11">');
            $this->curCel = 0;
        }
    
        public function writeNumberCell($value)
        {
            $this->curCel++;
            fwrite($this->workSheetHandler, '<c r="'.chr(64+$this->curCel).$this->numRows.'"><v>'.$value.'</v></c>');
        }
        public function writeStringCell($value)
        {
            $this->curCel++;
            if (!empty($value)) {
                $value = htmlspecialchars($value, ENT_QUOTES, 'UTF-8');
                $value = preg_replace( '/[\x00-\x13]/', '', $value );
                fwrite($this->stringsHandler, '<si><t>'.$value.'</t></si>');
                fwrite($this->workSheetHandler, '<c r="'.chr(64+$this->curCel).$this->numRows.'" t="s"><v>'.$this->numStrings.'</v></c>');
                $this->numStrings++;
            }
        }
    
        public function writeRowEnd()
        {
            fwrite($this->workSheetHandler, '</row>');
        }
    
        public function closeExcelWriter()
        {
            fwrite($this->workSheetHandler, '</sheetData>
    <sheetProtection sheet="false" objects="false" scenarios="false" formatCells="false" formatColumns="false" formatRows="false" insertColumns="false" insertRows="false" insertHyperlinks="false" deleteColumns="false" deleteRows="false" selectLockedCells="false" sort="false" autoFilter="false" pivotTables="false" selectUnlockedCells="false"/>
    <printOptions gridLines="false" gridLinesSet="true"/>
    <pageMargins left="0.7" right="0.7" top="0.75" bottom="0.75" header="0.3" footer="0.3"/>
    <pageSetup paperSize="1" orientation="default" scale="100" fitToHeight="1" fitToWidth="1"/>
    <headerFooter differentOddEven="false" differentFirst="false" scaleWithDoc="true" alignWithMargins="true">
    <oddHeader/>
    <oddFooter/>
    <evenHeader/>
    <evenFooter/>
    <firstHeader/>
    <firstFooter/>
    </headerFooter>
    </worksheet>');
            fwrite($this->stringsHandler, '</sst>');
            fclose($this->workSheetHandler);
            fclose($this->stringsHandler);
    
            $source = '../source.xlsx';
            $curDir = getcwd();
            chdir($this->dirPath.'/data');
            exec("zip -r $source * -O ../output.zip");
            chdir($curDir);
            rename($this->dirPath.'/output.zip', $this->outputFile);
            Switlle_Path::removeFolder($this->dirPath);
        }
    }
    Ответ написан
    1 комментарий
  • Почему Jquery xml парсер работает с ошибкой?

    @switlle
    Если очень нужно можно сделать у себя небольшой прокси на который будете слать запросы, и который в свою очередь будет выкачивать (возможно приводить к нужному виду) указанные вами страницы.
    Ответ написан
    Комментировать
  • Как одним SQL запросом удалить все дублирующиеся записи без count и having?

    @switlle
    сначала получите все дублирующиеся ID
    select b.id from mytable a, mytable b where a.column=b.column and a.id!=b.id
    а потом удалите хоть несколькими DELETE главное в одной транзации
    Ответ написан
    Комментировать
  • Программирование + Исскуство, что изучить?

    @switlle
    Мой Вам совет, если хотите и программировать и быть всегда в теме искусства - займитесь компьютерными играми. В вашем возрасте это очень интересно, и в тоже время есть время разобраться в деталях.
    Ответ написан
    Комментировать
  • О требованиях к соискателю на должность программиста

    @switlle
    Моё мнение такое: Из каждой строки вычеркните одно - и получится разработчик хорошего уровня.
    Ответ написан
    Комментировать
  • Как подключать разные файлы php в зависимости от разрешения браузера?

    @switlle
    Я думаю проблема именно в постановке вопроса. Задача изначально неправильная. Не представляю как потом вносить изменения в логику разных файлов.
    Я думаю ваша задача должна сводиться к выполнению ajax запросов с передачей параметров разрешения. А уже в одном файле вести обработку.
    А в идеале это вообще от php получать только нужные данные, а всё зависимую от разрешения часть выносить в javascript.
    Ответ написан
    Комментировать
  • Расшифруйте надпись на могиле

    @switlle
    / Может он геймер был? А это код от его фаталити /
    Ответ написан
    1 комментарий
  • «Хитрый дом» — выбор оборудования

    @switlle
    > у atmega328 не хватает выходов
    это можно легко увеличить. По i2c протоколу подключаете микрухи которые дают еще до 16 выходов, а подключить можно их несколько.

    >RS485
    это однозначно неподходящий вариант. в вашем случае все как и у меня упрется на регулярный опрос клиентов. и чем больше клиентов тем больше задержка при опросе.

    i2c предназначен для внутрисхемного соединения

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

    В общем я считаю для домашних дел Вам лучше подойдет именно Ethernet

    Что касается клиентов я бы реализовал сборщики данных на Arduino платформе или stm, а логику вынес на RPi, которая опрашивает сборщики через Ethernet.

    Звук: однозначно на отдельный контроллер.

    Резюмирую: делайте как можно больше независимых модулей. Хотя система будет выглядеть более громоздкой в плане архитектуры, она будет более удобна в отладке. Для своих проектов я думаю стоит начинать именно с простоты.
    Ответ написан
    Комментировать
  • Как бороться со спамом с левых сайтов

    @switlle
    А вы не пробовали написать не хостеру а регистратору домена?
    Ответ написан
  • AVR SMD программатор?

    @switlle
    Я думаю правильнее это предусматривать возможность программирования прямо на плате. Используйте SPI только придется немного допилить схему, потому как чаще всего эти порты нельзя оставить только для программирования.
    Ответ написан
    Комментировать
  • Система мониторинга конверсии посетителя в пользователя сайта

    @switlle
    Присоединяюсь тема очень актуальна. Настроив просто цели и конверсию в GA мы получаем только расплывчатые понятия. X пользователей пришли с гугла Y пришли по прямым ссылкам. А по каким они запросам пришли, с каких ссылок с других сайтов.
    Хоть свою систему пиши.
    Ответ написан
  • Востребованность open-source панели управления хостингом

    @switlle
    Я думаю это отличная идея.
    У меня например есть масса vps которые выполняют роль «рабов». И иногда хочется не заморачиваться с ними вообще. Купил его — и настроить по-быстрому под нужные параметры.
    Было бы хорошо, если бы у вас в наборе можно было все из коробки нужное развернуть. Например, сначала выбрал что и с чем хочешь связать (можно либо гибкие либо стандартные варианты), и скрипты сами делают первоначальную настройку окружения под себя. Это было бы действительно идеально.
    А остальные мелочи уже через веб.
    Ответ написан
    2 комментария
  • Как сверстать расширяемый фон?

    @switlle
    Как вариант такой: Например правая часть содержит весь фон плюс правый угол. А левая только левый угол с большим запасом черного перекрытия (от него в принципе тоже можно избавиться, но суть такова что оно есть). В результате мы правую часть будем позиционировать как нужно с выравниванием по правой стороне, а левой частью перекрывать ненужную часть фона.
    Ответ написан
  • Имеет смысл продолжать публиковать статьи про атоматические выключатели?

    @switlle
    Это хабр. Тут любят про новые браузеры, андроид, и стычки стартаперов.

    А вообще ваши статьи на уровне. Но много лучше чем их окружение в пределах дестка точно.
    Поэтому пишите.

    Было бы хорошо исходный код, если не жалко а не только хексы.
    Ответ написан
    Комментировать
  • Python IDE

    @switlle
    www.jetbrains.com/pycharm/

    По-моему что-то луче чем JetBrains найти будет тяжело. Вы для начала попробуйте — потом купите когда будет очередная волна скидок. Уверяю Вас покупать будете с великолепным чувства радости!
    Ответ написан
    1 комментарий
  • Помогите выбрать монитор для графики

    @switlle Автор вопроса
    Ребята. Сейчас стал вплотную вопрос о покупке. Скоро ДР моей благоверной.
    Вот из чего сейчас выбираю:

    NEC P241W
    hard.rozetka.com.ua/p241w_black/p203787/

    NEC MultiSync 2490WUXi2
    hard.rozetka.com.ua/ru/products/details/42232/index.html

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

    NEC MultiSync PA241W
    hard.rozetka.com.ua/nec_pa241w_white/p139058/

    Стоит ли заморочиться на этой модели...? Или можно из тех что выше.
    Ответ написан
    Комментировать
  • Нужна ли статья про game-dev своих школьных времён?

    @switlle
    Я думаю стоит. В таком духе «Как это было?». Моя первая игра писалась не 15 а 10 лет назад, но технологии тогда не менялись так быстро. Я за. Пишите и мы все установим модный тогда архиватор ace и по распаковываем свои архивы. Я за ностальгию!
    Ответ написан
    Комментировать