• В чем суть процедурного программирования?

    @majstar_Zubr
    C++, C#, gamedev
    alex4answ, процедурный стиль использует только понятия модель памяти, типы, инструкции, программа и подпрограмма.

    Вот и всё. Никаких составных типов. Концепция "состояние" в коде никак не выражается. Держите её если хотите в голове либо в комментариях.

    Никаких сущностей в коде. Держите из в голове или в комментариях.

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

    Но это всё уже вводится в структурном программировании.

    Процедурное программирование вводит модель памяти с понятиями стек и куча. Хотите сделать функцию в процедурной парадигме - вам придется оформить её в виде подпрограммы и вызывать её из другой. Причем понятия линковки нет, вы будете делать это используя адрес в куче, а какие-то данные, типа, аргументы, будете сами на стэк ложить, каждый раз при вызове подпрограммы "функция".
    Ах, да, захотите функцию для сложения двух чисел, придется сделать ctrl-c, ctrl-v и в теле подпрограммы написать сложение двух кусков данных взятых со стека. Для разности - копируете код, в теле меняете инструкции. И так для каждой функции.

    Да, понятия область видимости нет, придется его выражать в коде таким вот образом самостоятельно.

    Ну, и поскольку ОС не даст лезть за пределы одного процесса, подпрограмму придется положить в сорцы выше, чем ваш код.

    А максимум абстрагирования, которое вводит процедурное программирование, это символьное произвольное именование адреса в памяти. Да и вместо типов, скорее, используется смещение байтов для коллекции, которым просто даны имена.

    Дело в том, что о процедурной парадигме можно говорить только ретроспективно. В основном, процедурная парадигма это классический ассемблер.

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

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

    Т.е. берёте вы современный компилятор / интерпретатор любого языка, пишете решение в один файл, не используете составные типы, а только интегрированные простые (если вы выбрали язык со строгой типизацией), не используете функции, а только операторы, как закончите, смотрите на код - вы решили задачу в рамках процедурной парадигмы.

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

    А вот в языке с полной поддержкой процедурной парадигмы можно делать такие подпрограммы, которые косплеят функции, но возвращают несколько "аргументов", причем пишут прямо в память. Да и в принципе, в процедурной парадигме можно делать свой ABI, нет никаких стандартов, нет правил, ничто не истинно и всё дозволено.
    Ответ написан
    Комментировать
  • Как хранить картинки в БД MySQL?

    @helpik94
    DevOps engineer в Containerum
    Сначала делаете таблицу для хранения картинок:
    create table testblob (
        image_id        tinyint(3)  not null default '0',
        image_type      varchar(25) not null default '',
        image           blob        not null,
        image_size      varchar(25) not null default '',
        image_ctgy      varchar(25) not null default '',
        image_name      varchar(50) not null default ''
    );

    Затем:
    $imgData = file_get_contents($filename);
    $size = getimagesize($filename);
    mysql_connect("localhost", "$username", "$password");
    mysql_select_db ("$dbname");
    // mysqli 
    // $link = mysqli_connect("localhost", $username, $password,$dbname); 
    $sql = sprintf("INSERT INTO testblob
        (image_type, image, image_size, image_name)
        VALUES
        ('%s', '%s', '%d', '%s')",
       
        mysql_real_escape_string($size['mime']),
        mysql_real_escape_string($imgData),
        $size[3],
        mysql_real_escape_string($_FILES['userfile']['name'])
        );
    mysql_query($sql);

    Для отображения картинки на веб странице:
    $link = mysql_connect("localhost", "username", "password");
    mysql_select_db("testblob");
    $sql = "SELECT image FROM testblob WHERE image_id=0";
    $result = mysql_query("$sql");
    header("Content-type: image/jpeg");
    echo mysql_result($result, 0);
    mysql_close($link);
    Ответ написан
    2 комментария
  • Как хранить картинки в БД MySQL?

    sim3x
    @sim3x
    1) Какой тип поля использовать и вообще как харнится там картинка, в виде набора байтов?
    blob

    2) Вопрос, вытекающий из предыдущего, как сделать запрос на вставку и указать это jpg, png, gif и т.д.?
    Отдельное поле с указанием типа.
    Или делать магию узнавания типа файла по магии php.net/manual/en/function.mime-content-type.php
    Или (правильное решение) после загрузки файла приводить его к одному типу (жпг, пнг, вебм)
    Или даже так https://stackoverflow.com/a/21732109
    <img src="data:image/png;base64,'.base64_encode($row['image']).'">


    3) Как выводить на странице? Когда мы просто картинку средствами php тдаём там всё понятно header отдаём файловый, потом сам файл и всё ок, но здесь header уже передан и это обычная страница или там стоит типа src="getimage.php?id=738" где уже php скрипт формирует и отдаёт каждую картинку?
    а никак. Когда браузер будет по данному урлу запрашивать, пхп ему должен сформировать ответ с правильным контент-тайпом, так что перед началом отдачи - нужно будет полностью получить саму картинку из БД
    Ответ написан
    Комментировать
  • Какие плагины используются на этом сайте?

    bootd
    @bootd Куратор тега CSS
    Гугли и ты откроешь врата знаний!
    Многие вещи пишутся вручную, под нужды сайта!
    И вообще мне не понравился ваш ответ на комментарий eandr_67. Будто все вам тут обязаны. Зайдя в исходный код и пролестав его в самый низ и увидев много скриптов, можно загуглить по их названию и найти ответ =))

    А теперь по делу!

    assets/js/jquery.js - js библиотека jquery
    assets/js/google-code-prettify/prettify.js - плагин google для подсветки синтаксиса
    assets/js/bootstrap и все скрипты с именем bootstrap - это готовые так сказать мини плагины этого фреймворка, ну или компоненты раздробленные по частям(хз правда зачем).
    assets/js/application.js - какие то функции, скорее всего написанные разработчиками вручную.
    assets/js/jquery.easing.js - библиотека с набором различных видов анимированных переходов easings.net/ru
    assets/js/jquery.waitforimages.js - отображение картинок тогда, когда они загрузятся!
    assets/js/jquery.isotope.min.js - Isotope — это прекрасное дополнение для адаптивной верстки. С помощью этого бесплатного jQuery плагина, можно при заставить блоки динамически перемещаться по странице, при изменении разрешения экрана (или размера страницы). Также можно добавить плавную CSS3 анимацию.
    assets/js/jquery.prettyPhoto-3.1.4-W3C.js - Плагин для организации галереи с lightbox эффектом, возможностью слайд шоу, сменой визуальных тем, отображением мини эскизов (в самом лайтбоксе) и т.д.
    assets/js/jquery.ui.totop.js - Тоже не нашел, но из названия понятно, что это компонент плагина jquery UI, который видать что то делает со скролом.
    assets/js/jquery.inview.js - 1 раз вижу, но погуглив понял, он нужен для паралкаса.
    assets/js/jquery.parallax-1.1.3.js - плагин для создания паралакс эффектов
    assets/js/jquery.localscroll-1.2.7-min.js - ответ тут
    assets/js/jquery.scrollTo-1.4.2-min.js - плагин плавного скроллинга к нужному вам элементу
    assets/js/jquery.gmap.js - GMAP это легкий JQuery плагин, который поможет вам вставлять Google Maps на вашем сайте.
    assets/js/custom.js - файлик в котором разрабы писали нужный им функционал для отдельных частей сайта.

    Вроде все, надеюсь помог!
    Ответ написан
    1 комментарий
  • Как обернуть каждую строку определенным кодом в Sublime text?

    @AlexBattlehater
    Поздно, наверное, но если кто еще не знает: выделяем текст, жмем ctr+alt+enter. Для HTML появится оберткой div, если нужна другая - в появившемся поле ввода внизу - вводим нужный тег, если нужно обернуть каждую строчку по отдельности - после тега ставим звездочку(*).
    Ответ написан
    Комментировать
  • Composer не видит переменную PATH?

    @Dimon-zmey
    Все дело в использовании Open Server в котором уже установлен composer. Зайдите в \OpenServer\modules\php\ выберите версию php которую вы используете и удалите файлы composer.bat и composer.phar. После перезагрузки сервера команда composer сразу заработает.
    Ответ написан
    5 комментариев
  • Composer не видит переменную PATH?

    vangelis83
    @vangelis83
    Начинающий веб разработчик
    У меня была такая проблема. Решил ее следующим образом: в windows 10 есть окно, в котором все пути выводятся в отдельных строках и там же есть кнопки "Вверх", "Вниз". Я путь к php поставил ниже, после пути к файлам composer. И случилось чудо, composer у меня заработал.
    Ответ написан
    4 комментария