Поиск по этому блогу

Показаны сообщения с ярлыком программирование. Показать все сообщения
Показаны сообщения с ярлыком программирование. Показать все сообщения

понедельник, 24 сентября 2018 г.

android java заметки разработки

Здравствуйте!

Решил записать всякую мелочь по вопросу разработки под андроид.

android, java, программирование, полезное, заметки

1). Не работает визуализирование activity.
     Требуется в res - styles заменить Theme.AppCompat.Light.DarkActionBar на Base.Theme.AppCompat.Light.DarkActionBar
2). Вывод данных в Logcat для логирования или дебага.
     Log.d("debug", String.valueOf("Hello World"));
3. Поиск элемента в activity
    Button addRead = findViewById(R.id.addRead);
4. Для добавления обработчика нажатия кнопки в activity требуется создать метод принимающий в себя View view. Пример:
public void onClick(View view){
}
5. Для передачи чего то большего требуется добавлять listener для кнопки:
Button addRead = findViewById(R.id.addRead);
View.OnClickListener addTime = new View.OnClickListener() {
}
addRead.setOnClickListener(addTime);
6. Удобный вариант для вывода всплывающих сообщений
public void makeToast(String text){
        Toast toast = Toast.makeText(getApplicationContext(),
                text, Toast.LENGTH_SHORT);
        toast.show();
}
5. Сравнение строк в java производится не привычным == а специальным строковым методом .equal . При сравнении через 2 равно будет сравниваться объект а не значение.

Пока всё что хотелось бы записать. Думаю в дальнейшем список будет пополняться.

Надеюсь пост был полезен.
Успехов и хорошего дня!

воскресенье, 16 сентября 2018 г.

php excel импорт данных формат даты

Здравствуйте!

Если вы уже читали пост об импорте данных и даже попробовали его то наверняка столкнулись с такой банальной вещью как импорт даты.

инструкция, полезное, программирование, php, php excel, дата

Дело в том что Excel по умолчанию хранит дадут в виде секунд с 1 января 1900 года. Зачем это сделано неизвестно но phpexcel в итоге выдаст нечто в духе 39982 . Для адекватного парсинга даты требуется использовать имеющуюся функцию date в языке PHP вместе с функцией получения данных из ячейки.
$val = date('Y-m-d', PHPExcel_Shared_Date::ExcelToPHP($cell->getValue()));
Формат даты можно указать любой в соответствии с синтаксисом date.

Надеюсь пост был полезен.
Успехов и хорошего дня!

четверг, 13 сентября 2018 г.

php excel импорт данных

Здравствуйте!

Помимо возможностей phpexcel к экспорту данных он так же умеет эти самые данные импортировать. Зачастую для импорта данных используется формат csv который представляет некоторые неудобства ( обучение пользователей, лишние закрывающие символы итд ). PHPExcel без проблем читает самые обычные xls и xlsx.

php, php excel, программирование, полезное, инструкция,

Для импорта данных требуется проделать следующие действия:
<?php
require_once "PHPExcel.php";
$filecontent = file_get_contents("ИМЯ_ФАЙЛА.xlsx");
$tmpfname = tempnam(sys_get_temp_dir(),"tmpxls");
file_put_contents($tmpfname,$filecontent);
$excelReader = PHPExcel_IOFactory::createReaderForFile($tmpfname);
$excelObj = $excelReader->load($tmpfname);
                            //Номер листа для чтения
        $worksheet = $excelObj->getSheet(0);
$lastRow = $worksheet->getHighestRow();
for ($row = 0; $row <= $lastRow; $row++) {
                                    //Выводим содержимое строк A[$row] B[$row] etc...
echo $worksheet->getCell('A'.$row)->getValue();
echo $worksheet->getCell('B'.$row)->getValue();
echo $worksheet->getCell('C'.$row)->getValue();
echo $worksheet->getCell('D'.$row)->getValue();
echo $worksheet->getCell('E'.$row)->getValue();
}
?>

Надеюсь инструкция была полезной.
Успехов и хорошего дня!

понедельник, 10 сентября 2018 г.

datatables server side processing ajax reload page остаться на странице

Здравствуйте!

Помимо настройки подгрузки данных через server-side-processing порой встаёт задача обновления загруженных данных. Зачастую это связано с изменением данных в таблице - например вы отредактировали строку и хотите обновить таблицу без перезагрузки страницы.

инструкция, полезное, ajax, datatables, jquery, программирование,

В данном случае можно использовать функцию:
$('#table_data').DataTable().ajax.reload(null, false);
В первом параметре передаётся callback который может быть вызван по завершению обновления таблицы. Второй параметр отвечает за возврат к первой странице ( false - строка и лимит записей остаются так как выбраны пользователем ; true - таблица возвращается к стандартному лимиту записей для показа и 1 странице ).

Лично у меня возникли глюки с данной функцией - она просто ничего не делала. Для работы пришлось добавить задержку в 1 секунду после редактирования и всё начало отрабатывать.
setTimeout(function(){$('#table_data').DataTable().ajax.reload(null, false);}, 1000);
Надеюсь пост был полезен.
Успехов и хорошего дня!

воскресенье, 9 сентября 2018 г.

datatables server side processing ajax

Здравствуйте!

При использовании в веб проекте таблиц зачастую все приходят к использованию очень крутого jquery скрипта под названием datatables. Полностью бесплатный ( версия без редактора ) и с кучей функций - обычно хватает за глаза.

инструкция, полезное, ajax, datatables, jquery, программирование,


Но в случае с использованием с большим количеством данных которые нельзя загрузить на страницу во избежание зависания браузера требуется подгружать данные используя ajax. Для этого в официальной инструкции имеется такой вариант загрузки данных как server side processing через post подтягивающий данные возвращённые php файлом.

Но к сожалению он не совсем корректно работает с русским языком ( точнее совсем не работает ). Имеется модифицированная версия данного класса а так же как производить инициализацию ( и передачу параметров если надо ):

$('#table_data').DataTable( { 
"processing": true, 
"serverSide": true, 
"order": [[ 0, "desc" ]], 
"ajax": "server_processing.php" 
});
В случае необходимости передачи параметров их можно передать в GET:
"ajax": "server_processing.php?page=index" 
server_processing.php:
<?php
//Primary el в таблице
$primaryKey = 'id'; 

//Имя таблицы для использования
$table_name = "указать имя";

//Перечисление элементов для вывода из таблицы
$columns = array(
array( 'db' => 'id',   'dt' => 0 )
);

// Информация для подключения к mysql
$sql_details = array(
    'user' => 'Имя_Пользователя',
    'pass' => 'Пароль',
    'db'   => 'Имя_Базы_Данных',
    'host' => 'Хост',
    'charset' => 'utf8'
);
require( 'ssp.class.php' );
echo json_encode(
    SSP::simple( $_GET, $sql_details, $table_name, $primaryKey, $columns )
);

?>
Так же требуется в директорию загрузить видоизменённый ssp.class.php

Надеюсь пост был полезен.
Успехов и хорошего дня!

понедельник, 3 сентября 2018 г.

ymaps добавление карты на сайт

Здравствуйте!

Иногда встаёт необходимость добавить карту на сайт - например с указанием точки где находится организация. В данном случае вставлять скриншот с Google Earth является не лучшей идеей - ведь желательно что бы карта была интерактивной и пользователь мог определиться где находится точка. Для этих целей существует возможность добавления кусочка яндекс карт на ваш сайт.

ymaps, yandex, maps, программирование,

Конструктор карт яндекс позволяет это сделать довольно просто. Требуется лишь открыть ресурс и выбрать "создать карту" авторизовавшись под своей учётной записью.
Введя название для карты требуется в поле "Адрес" найти ту самую точку которую вы хотите разместить на карте.
После добавления точки вы можете изменить её текст вместо адреса указав например наименование организации.
Нажимаем "сохранить и продолжить" после чего попадаем на выбор масштаба карты и её типа - статическая или динамическая карта. Для того что бы карта хорошо отображалась на любой вёрстке желательно поставить галочку "растянуть по ширине".

После нажатия кнопки "Получить код карты" появляется возможность скопировать код который необходимость вставить на ваш сайт. После чего карта появится на той странице где вы добавили код.

Надеюсь инструкция была полезной.
Успехов и хорошего дня!

пятница, 31 августа 2018 г.

php рекурсия пример вывода категорий меню

Здравствуйте!

Хотелось бы поделиться очень хорошим примером рекурсии для php по самой распространённой задаче - сделать меню с категориями.

php, программирование, рекурсия,

Прежде всего создадим таблицу в базе данных.
CREATE  TABLE `categories` (
`id` INT  NOT NULL AUTO_INCREMENT ,
`parent_id`  INT NOT NULL ,
`name`  VARCHAR( 50 ) NOT NULL ,
PRIMARY KEY  ( `id` )
);
Заполним её данными.
INSERT INTO `categories` (`id`, `parent_id`, `name`) VALUES
(1, 0, 'Раздел 1'),
(2, 0, 'Раздел 2'),
(3, 0, 'Раздел 3'),
(4, 1, 'Раздел 1.1'),
(5, 1, 'Раздел 1.2'),
(6, 4, 'Раздел 1.1.1'),
(7, 2, 'Раздел 2.1'),
(8, 2, 'Раздел 2.2'),
(9, 3, 'Раздел 3.1');
Создаём наш php файл для вывода и вытаскиваем данные из базы данных.
//Выбираем всё из нашей таблицы
$result=mysqli_query($connect, "SELECT * FROM  categories");
//Если в базе данных есть записи, формируем массив
if   (mysqli_num_rows($result) > 0){
    $cats = array();
//В цикле формируем массив разделов, ключом будет id родительской категории, а также массив разделов, ключом будет id категории
    while($cat =  mysqli_fetch_assoc($result)){
        $cats_ID[$cat['id']][] = $cat;
        $cats[$cat['parent_id']][$cat['id']] =  $cat;
    }
}
Рекурсивная функция для вывода.
function build_tree($cats,$parent_id,$only_parent = false){
    if(is_array($cats) and isset($cats[$parent_id])){
        $tree = '<ul>';
        if($only_parent==false){
            foreach($cats[$parent_id] as $cat){
                $tree .= '<li>'.$cat['name'].' #'.$cat['id'];
                $tree .=  build_tree($cats,$cat['id']);
                $tree .= '</li>';
            }
        }elseif(is_numeric($only_parent)){
            $cat = $cats[$parent_id][$only_parent];
            $tree .= '<li>'.$cat['name'].' #'.$cat['id'];
            $tree .=  build_tree($cats,$cat['id']);
            $tree .= '</li>';
        }
        $tree .= '</ul>';
    }
    else return null;
    return $tree;
}
Вызываем функцию и передаём в неё наш массив.
echo build_tree($cats,0);
На выходе получаем очень красивую структуру:
<ul>
    <li>Раздел 1
        <ul>
            <li>Раздел 1.1
                <ul>
                    <li>Раздел 1.1.1</li>
                </ul>
            </li>
            <li>Раздел 1.2</li>
        </ul>
    </li>
    <li>Раздел 2
        <ul>
            <li>Раздел 1.1</li>
            <li>Раздел 1.2</li>
        </ul>
    </li>
    <li>Раздел 3
        <ul>
            <li>Раздел 3.1</li>
        </ul>
    </li>
</ul>
Я считаю что это очень хороший пример рекурсии в php. Кроме того он решает столь распространённую задачу вывода меню или списка категорий.

Надеюсь код был полезен.
Успехов и хорошего дня!

четверг, 30 августа 2018 г.

js получение выбранного option в select

Здравствуйте!

Порой бывает ситуация что нужно в js отследить выбор элемента в select, а так же выбранное значение. На чистом js это реализуется через событие onChange.

js, html, программирование,

JS:
function getValue(selectObj) {
    alert(selectObj.value);
}
HTML:
<select onchange="getValue(this)">
     <option value="val1">Text 1</option>
     <option value="val2">Text 2</option>
     <option value="val3">Text 3</option>
</select>
Очень удобно когда вместе с значением нужно передать ещё что то ( например id некого элемента заполняемое в php ).

Надеюсь код был полезен.
Успехов и хорошего дня!

среда, 29 августа 2018 г.

php multi image upload загрузка множества фото

Здравствуйте!

Встала тут задачка сделать загрузку множества фотографий с динамическими input . Да имеется возможность multiple но не всегда она удобна. Был найден и использован следующий вариант. Требует jQuery для работы.

php, js, jquery, html, программирование, инструкция, полезное,

HTML
<div class="field_wrapper">
<input type="file" name="photos[]" class="form-control">
</div>
<i class="add_button fa fa-plus">Добавить ещё</i> 
JS
<script type="text/javascript">
$(document).ready(function(){
    var maxField = 10;
    var addButton = $('.add_button');
    var wrapper = $('.field_wrapper');
    var fieldHTML = '<br><input type="file" name="photos[]" value="" class="form-control">';
    var x = 1;
   
    $(addButton).click(function(){
        if(x < maxField){
            $(wrapper).append(fieldHTML);
        }
    });
   
    $(wrapper).on('click', '.remove_button', function(e){
        e.preventDefault();
        $(this).parent('div').remove();
        x--;
    });
});
</script>
PHP
$total = count($_FILES['photos']['name']);
for( $i=0 ; $i < $total ; $i++ ) {
$tmpFilePath = $_FILES['photos']['tmp_name'][$i];
        $photo = generateFilename();
$photo.=".jpg";
move_uploaded_file($tmpFilePath, "../uploads/".$photo); 
          }

В коде так же используется самописная функция generateFilename которая возвращает созданное имя файла:

function generateFilename(){
$chars = 'abdefhiknrstyz123456789_';
$string = '';
for ($i = 0; $i < 30; $i++) {
$string .= substr($chars, rand(1, 24) - 1, 1);
}
return $string;
}


Надеюсь код был полезен.
Успехов и хорошего дня!

пятница, 3 августа 2018 г.

php excel базовый файл экспорта

Здравствуйте!

Уже очень давно занимаясь веб программированием и встречая задачу экспортировать нечто в XLSX - обращаюсь к библиотеке PHP Excel. Прожорливая на ресурсы но зато простая и эффективная. Разобраться с ней сходу порой не так просто поэтому решил выложить "базовый костяк" файла осуществляющего экспорт данных в формат XLSX. Так же в корне должны присутствовать PHPExcel.php и одноимённая директория PHPExcel содержащая все компоненты данной библиотеки.

<?php
/** Error reporting */
error_reporting(E_ALL);
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);
date_default_timezone_set('Europe/London');
if (PHP_SAPI == 'cli')
die('This example should only be run from a Web Browser');

require_once dirname(__FILE__) . '/PHPExcel.php';

// Create new PHPExcel object
$objPHPExcel = new PHPExcel();

// Set document properties
$objPHPExcel->getProperties()->setCreator("Автор")
->setLastModifiedBy("Автор Последних Изменений")
->setTitle("Заголовок")
->setSubject("Заголовок")
->setDescription("Заголовок")
->setKeywords("Ключевые Слова")
->setCategory("Категория Файла");

$objPHPExcel->getActiveSheet()->setCellValue("A1", "Файл экспорта сформирован автоматически");

// Set active sheet index to the first sheet, so Excel opens this as the first sheet
$objPHPExcel->setActiveSheetIndex(0);

// Redirect output to a client as web browser (Excel5)
header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment;filename="имя_файла.xlsx"');
header('Cache-Control: max-age=0');
// If you're serving to IE 9, then the following may be needed
header('Cache-Control: max-age=1');

// If you're serving to IE over SSL, then the following may be needed
header ('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); // Date in the past
header ('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT'); // always modified
header ('Cache-Control: cache, must-revalidate'); // HTTP/1.1
header ('Pragma: public'); // HTTP/1.0

//$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
$objWriter->save('php://output');
exit;
?>
инструкция, полезное, программирование, php, php excel,

Заносим информацию в столбцы
$objPHPExcel->getActiveSheet()->setCellValue("A1", "Файл экспорта сформирован автоматически");

Меняем имя файла и прочее в файле - и данные уже успешно экспортированы в xlsx!

Кстати говоря если вам понадобится файл в устаревшем формате xls - достаточно раскомментировать строку
//$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
И закомментировать
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');

Так же оставляю ссылочку на скачивание библиотеки PHPExcel 2015

Надеюсь информация была полезной и экспорт пройдёт без проблем.
Успехов и хорошего дня!

понедельник, 30 июля 2018 г.

как научиться компьютеру pc-part 4

Здравствуйте!

И так пришло время рассказать о последней самой важной теме в обучении компьютеру - программировании. Ранее в 3 части было рассказано что такое софт и как ему научиться. А в данной части затронем как научиться его создавать.

Основная цель программирования это автоматизация или улучшение рабочий процессов ( программирование развлечений не в счёт ). Поэтому может быть совершенно разного уровня. От маленький макросов добавленных в excel до огромных систем которые позволяют управлять целыми предприятиями.

При желании научиться программированию прежде всего требуется изучить базовые понятия такие как переменные циклы условия компилирование и т.д. Далее желательно ознакомиться с ООП т.к. на этих принципах сейчас базируется подавляющее количество программ.

Далее при разработке нужно определиться с тем что требуется разрабатывать ( платформа ). Это может быть приложение для компьютера для телефона сайт или какой то сервис. Возможностей море. И тут уже встаёт очень важный момент - выбор языка. Невозможно идеально изучить все языки. Лучше выбрать какой то один язык и развиваться вместе с ним.

Ознакомимся с самыми популярными языками:

1. php - язык для веб программирования. Очень лёгкий в освоении понимании и при этом подходящий для реализации любого веб проекта.
как научиться компьютеру, полезная информация, полезное, программирование, c sharp, c#, php,  python, java, c++
2. c# он же c sharp - язык который попытался совместить в себе c++ и java и стать универсальным. Базируется на платформе .NET от Microsoft. Подходит для разработки всего и вся. Но в вебе проигрывает php. А в высоконагруженных приложениях проигрывает c++. В плане совместимости - проигрывает java. Зато универсален, да.
как научиться компьютеру, полезная информация, полезное, программирование, c sharp, c#, php,  python, java, c++
3. java - самый крупный язык на текущий момент. Over 3 billion devices running java (c) установщик. И это правда так. Наиболее подходит для разработки кроссплатформенных приложений и приложений для устройств ( телефоны и прочее ).
как научиться компьютеру, полезная информация, полезное, программирование, c sharp, c#, php,  python, java, c++
4. C++ - высокоуровневый язык который идеально подходит для написания кроссплатформенных приложений если у вас есть достаточно времени на его изучение и поиск подходящих библиотек. Самый хардкорный и самый оптимизированный - на нём можно писать как очень хорошие так и очень плохие приложения. Сайты на нём писать тяжело но можно.
как научиться компьютеру, полезная информация, полезное, программирование, c sharp, c#, php,  python, java, c++
5. python - ещё один уникальный язык. Говорят что подходит для любых целей. На текущий момент стабильно развивается и совершенствуется. Стоит где то в нише вместе с java.
как научиться компьютеру, полезная информация, полезное, программирование, c sharp, c#, php,  python, java, c++

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

Часть 1
Часть 2
Часть 3

Надеюсь эта информация была вам интересна.
Успехов и хорошего дня!

четверг, 26 июля 2018 г.

новые возможности get запросов в php

Здравствуйте!

Наткнулся на дико боянистую картинку аж полтора года назад вышедшую. Но она очень повеселила. Вкратце "дополнительные возможности GET запросов".


Ну и что бы пост даром не пропадал - вкратце о том что такое get запросы.

Для передачи данных между страницами в веб php использует два возможных варианта: открытую и скрытую передачу параметров.

Открытая передача она же GET представляет из себя дополнения к адресной строке в которых указывается имя переменной и её содержание. Все передающиеся переменные это обычные строки. Очень распространённый вариант и совершенно небезопасный ведь любой может

  1. Увидеть что же там отсылается.
  2. Поменять то что отсылвается.
Примеры сплошь и рядом но в целом общая схема выглядит так: наименование_страницы.php?переменная1=значение1&переменная2=значение2&переменная3=значение3

Есть так же POST передача параметров когда они не видны обычному пользователю. Именно пост используется при передаче данных из JavaScript. И именно по данному типу регулярно во всём интернете бегают данные в json формате. При передаче данных уже нет ограничения на тип данных. Благодаря JSON формату можно передавать массивы между различными источниками. Например передать массив данных из JavaScript в PHP.


Надеюсь улыбнулись.
Успехов и хорошего дня!

среда, 6 июня 2018 г.

css компрессор сжатие css

Здравствуйте!

При создании сайта в один прекрасный момент все работы завершаются и начинаешь задумываться о быстродействии сайта в разных мелочах. Обычно первое что приходит в голову - это размеры подгружаемых файлов. И в этом есть доля истины. Современные картинки и код занимают довольно большой объем.

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

вдруг кто не знает, полезная информация, полезное, программирование, css,


Для этого я предпочитаю использовать сайт csscompressor.com . Если варианты настройки сжатия выбор версии css и дополнительные настройки. Очень удобно и быстро. Результат работы сжатия на сайте можно видеть на картинке выше.

Надеюсь получилось значительно сжать ваши css.
Успехов и хорошего дня!