• Как написать регулярное выражение по поиску текста в скобках?

    twobomb
    @twobomb
    let text = str.match(/\([^\(]*\(([^\)]*)/)[1];
    Ответ написан
    Комментировать
  • Имеется 4 item`a, ширина каждого 20% (от ширины контейнера). Как сделать заливку контейнера, зная процент от числа?

    twobomb
    @twobomb
    Если отступы между палками не считать , то можно так
    let conts = [line1,line2,line3,line4];
    let w = 100/conts.length;
    for(let i = 0; i < conts.length;i++)  
      conts[i].style.width = progressResult- w*i < 0?0:Math.min(w,progressResult- w*i)/w * 100 + "%";
    Ответ написан
    Комментировать
  • Как сделать аккордеон в таблице?

    twobomb
    @twobomb
    Ну не создал, а открыл наверное
    .panel{
      display:none;
    }
    .panel.active{
      display:block;
    }

    document.querySelectorAll(".accordion").forEach(el=>{
        el.addEventListener("click",e=>{
        	e.currentTarget.parentNode.parentNode.nextElementSibling.classList.toggle("active");
        });
    });
    Ответ написан
    Комментировать
  • Почему json не парсится?

    twobomb
    @twobomb
    dynamic d = JObject.Parse(json);
    print(d.metadata.title);
    Ответ написан
  • Как сделать кассу в гугл таблице?

    twobomb
    @twobomb
    Добавьте макрос в вашу таблицу, вот код.
    Вся документация по макросам гугл таблиц тут https://developers.google.com/apps-script/reference/
    function myFunction() {
      var spreadsheet = SpreadsheetApp.getActive();  
      let region = "A1:B10";//Диапазон рабочей области
      let numbersCol = 1;//Порядковый номер колонки в диапазоне region по которой идёт поиск
      let countCol = 2;//Порядковый номер колонки в диапазоне region с количеством товара
      let range = spreadsheet.getRange(region);
      let ui = SpreadsheetApp.getUi();
      var response = ui.prompt('+1 к количеству', 'Введите номер товара', ui.ButtonSet.OK_CANCEL);
      if (response.getSelectedButton() == ui.Button.OK) {
        if(range.getRow() <= range.getLastRow())
          for(let i = 1; i <= range.getNumRows();i++){  
            if(range.getCell(i,numbersCol).getValue().toString().trim() == response.getResponseText().trim()){
              let v = parseInt(range.getCell(i,countCol).getValue());
              if(isNaN(v))
                v = 0;
              v++
              range.getCell(i,countCol).setValue(v);
              break;
            }        
            if( i == range.getNumRows())
              ui.alert("Товар с номером '"+response.getResponseText().trim() +"' не найден!")
          }
      }
    };
    Ответ написан
  • Как посчитать время опоздания в Google Sheets?

    twobomb
    @twobomb
    =ЕСЛИ(E3 < A3;СЦЕПИТЬ("Пришёл раньше на ";ЕСЛИ(ОКРУГЛВНИЗ(((ЧАС(A3)*60+МИНУТЫ(A3)) - (ЧАС(E3)*60+МИНУТЫ(E3)))/60) > 0;СЦЕПИТЬ(ОКРУГЛВНИЗ(((ЧАС(A3)*60+МИНУТЫ(A3)) - (ЧАС(E3)*60+МИНУТЫ(E3)))/60);"ч.");"");" "; ОСТАТ((ЧАС(A3)*60+МИНУТЫ(A3)) - (ЧАС(E3)*60+МИНУТЫ(E3));60);" мин."); ЕСЛИ(E3 > B3;СЦЕПИТЬ("Опоздал на ";ЕСЛИ(ОКРУГЛВНИЗ(((ЧАС(E3)*60+МИНУТЫ(E3)) - (ЧАС(B3)*60+МИНУТЫ(B3)))/60) > 0;СЦЕПИТЬ(ОКРУГЛВНИЗ(((ЧАС(E3)*60+МИНУТЫ(E3)) - (ЧАС(B3)*60+МИНУТЫ(B3)))/60);"ч.");"");" "; ОСТАТ((ЧАС(E3)*60+МИНУТЫ(E3)) - (ЧАС(B3)*60+МИНУТЫ(B3));60);" мин.");"Прибыл вовремя"))
    Ответ написан
  • Вопрос про изучение C# – оптимальная методика?

    twobomb
    @twobomb
    Да нормально, это. Я начал знакомство с программированием с языка C++, потом появилась необходимость коё-что сделать на VBA(visual basic for application), выучил его, потом на веб потянуло, выучил js,html, потом полез в бекенд php пришлось осознать что такое бд, поработал с mysql, postgres. Потом решил создать онлайн игру полез в node js, там познакомился с mongodb. Потом столкнулся с Java, за пару недель выучил java и новомодную оболочку javafx. Потом была необходимость разбираться с ассемблерами, masm, fasm, написал загрузчик, упорол флешку, сложно, забил. Потом узнал про C#, полез туда win forms, wpf, опять в геймдев потянуло , полез в Unity параллельно занимался моделированием для игры, познавал себя в блендере, до этого на 3д максе работал. Где-то среди всего этого еще затерялся action script 3 (это язык для флеша, пусть земля ему будет пухом), на котором я тоже делал игруху на бокс2д, чтобы карты для неё можно было создавать через tiled map editor. И это всё малый список из того что я попробовал в первые годы входа в среду программирования, там еще кучи фреймворков было опробовано на разных языках.
    Ну и естественно бывало когда я обучался сразу в 3х+ разных языках. На самом деле самое сложное это определится чего ты хочешь, чем конкретно тебе нравится заниматься, особенно если нравится всё. Поэтому ваше 'я учу C#, а может быть мне хтмл поковырять' выглядит смешно.
    Ответ написан
    Комментировать
  • SQL запрос, как осуществить выборку данных одним махом?

    twobomb
    @twobomb
    SELECT p.id FROM peoples as p WHERE NOT (SELECT COUNT(*) FROM cars as c WHERE c.peoples_id = p.id AND c.desc IN ('Mercedes', 'BMW'));
    Ответ написан
    Комментировать
  • Отдать значения в поток и вернуть результат выполнения?

    twobomb
    @twobomb
    Никак, просто обращайтесь из одного потока к другому напрямую или через Invoke. Если напрямую и боитесь что доступ может производится в один момент из двух потоков, используйте lock перед записью.
    Для отмены реализуйте механизм CancellationToken
    Ответ написан
    Комментировать
  • Как вернуть массив array_walk_recursive?

    twobomb
    @twobomb
    function w(&$ean,$res){
        foreach($res as $k=>$v){
            if($k==='barcodes')
                $ean[] = $v;
            if(is_array($v))
                w($ean,$v);
        }
    }    
    w($ean,$response);
    Ответ написан
  • Как автоматически определить полигон вокруг линий или точки?

    twobomb
    @twobomb
    function getRects(dots,padding  = 30){		//dots - Array[{x:x,y:y} ] 
      if(dots.length == 1)
      	dots = dots.concat([dots[0]]);
    	let rects = [];
      	if(dots.length > 1){
        	for(let i = 0; i < dots.length-1;i++){      
          	let angle = getAngle(dots[i].x,dots[i].y,dots[i+1].x,dots[i+1].y);
            rects.push({
            	x1:dots[i].x + padding * Math.cos(angle-Math.PI/2) + padding * Math.cos(angle+Math.PI),
              y1:dots[i].y  + padding * Math.sin(angle-Math.PI/2) + padding * Math.sin(angle+Math.PI),
              
            	x2:dots[i].x + padding * Math.cos(angle+Math.PI/2) + padding * Math.cos(angle+Math.PI),
              y2:dots[i].y  + padding * Math.sin(angle+Math.PI/2) + padding * Math.sin(angle+Math.PI),
              
            	x3:dots[i+1].x + padding * Math.cos(angle+Math.PI/2) + padding * Math.cos(angle),
              y3:dots[i+1].y  + padding * Math.sin(angle+Math.PI/2) + padding * Math.sin(angle),
              
            	x4:dots[i+1].x + padding * Math.cos(angle-Math.PI/2) + padding * Math.cos(angle),
              y4:dots[i+1].y  + padding * Math.sin(angle-Math.PI/2)  + padding * Math.sin(angle),
              
            });
          }
        }
        return rects;
    }
    //Получить угол между двумя точками
    function getAngle(dx, dy, dx1, dy1) {
      return Math.atan2(dy - dy1, dx - dx1) + Math.PI;
    }

    Ответ написан
    4 комментария
  • Как сделать конвертацию байтов?

    twobomb
    @twobomb
    function myfunc($text){
    	$text = utf8_encode($text);
    
    	$buffer = [];
    	foreach(mb_str_split($text) as $v)
    		$buffer[] = ord($v);
    
    	for ($i = count($buffer)-2; $i >= 0; $i--)
    		$buffer[$i] ^= $buffer[$i+1];
    
    	$buffer[count($buffer) - 1] ^= $buffer[0];
    
    	return implode(array_map("dec2hexbyte", $buffer));
    }
    
    function dec2hexbyte($number){
    	$hexval = dechex($number);
    	if(mb_strlen($hexval) == 1)
    		$hexval = "0".$hexval;
        return mb_strtoupper($hexval);
    }
    
    
    $text = "my text";
    echo myfunc($text);
    Ответ написан
    Комментировать
  • Почему не работает код в C#?

    twobomb
    @twobomb
    Ну потому-что у битмапа нет таких методов. Это методы Graphics. Используйте
    Graphics g = Graphics.FromImage(gBitmap);
    g.Clear(Color.White);

    и т.д.
    Ответ написан
  • Как заставить хром показать градиент в svg спрайте?

    twobomb
    @twobomb
    Чёто ты херни наделал, symbol вообще не должен отображаться это типа как defs, типа переменная которую можно многократно использовать. Нужно типа такого
    <svg fill="none" version="1.1" xmlns="http://www.w3.org/2000/svg"  xmlns:xlink="http://www.w3.org/1999/xlink">
      <defs>
        <linearGradient id="ig" x1="5.7886" y1="29.2114" x2="27.6465" y2="7.35349"
          gradientUnits="userSpaceOnUse">
          <stop stop-color="#FEE411" />
          <stop offset="0.0518459" stop-color="#FEDB16" />
          <stop offset="0.1381" stop-color="#FEC125" />
          <stop offset="0.2481" stop-color="#FE983D" />
          <stop offset="0.3762" stop-color="#FE5F5E" />
          <stop offset="0.5" stop-color="#FE2181" />
          <stop offset="1" stop-color="#9000DC" />
        </linearGradient>
      </defs>
      <symbol id="telegram" viewBox="0 0 35 35">
        <path
          d="M17.5 35C27.165 35 35 27.165 35 17.5C35 7.83502 27.165 0 17.5 0C7.83502 0 0 7.83502 0 17.5C0 27.165 7.83502 35 17.5 35Z"
          fill="#039BE5" />
        <path
          d="M8.00772 17.1208L24.8806 10.6152C25.6638 10.3323 26.3477 10.8063 26.094 11.9904L26.0954 11.989L23.2225 25.5238C23.0096 26.4833 22.4394 26.7167 21.6417 26.2646L17.2667 23.0402L15.1565 25.0731C14.9231 25.3065 14.7263 25.5033 14.2742 25.5033L14.5848 21.051L22.6931 13.7258C23.0461 13.4152 22.6144 13.2402 22.1492 13.5494L12.129 19.8581L7.80939 18.5106C6.87168 18.2131 6.85127 17.5729 8.00772 17.1208Z"
          fill="white" />
      </symbol>
      <symbol id="instagram" viewBox="0 0 35 35">
        <path
          d="M17.5 32.8809C25.9946 32.8809 32.8809 25.9946 32.8809 17.5C32.8809 9.00539 25.9946 2.11914 17.5 2.11914C9.00539 2.11914 2.11914 9.00539 2.11914 17.5C2.11914 25.9946 9.00539 32.8809 17.5 32.8809Z"
          fill="url(#ig)">
        </path>
        <path
          d="M20.7676 8.95508H14.2393C11.3271 8.95508 8.96191 11.3203 8.96191 14.2324V20.7607C8.96191 23.6729 11.3271 26.0381 14.2393 26.0381H20.7676C23.6797 26.0381 26.0449 23.6729 26.0449 20.7607V14.2324C26.0449 11.3203 23.6797 8.95508 20.7676 8.95508ZM24.1377 20.7676C24.1377 22.627 22.627 24.1445 20.7607 24.1445H14.2324C12.373 24.1445 10.8555 22.6338 10.8555 20.7676V14.2393C10.8555 12.3799 12.3662 10.8623 14.2324 10.8623H20.7607C22.6201 10.8623 24.1377 12.373 24.1377 14.2393V20.7676Z"
          fill="white" />
        <path
          d="M17.5 13.1318C15.0937 13.1318 13.1318 15.0937 13.1318 17.5C13.1318 19.9063 15.0937 21.8682 17.5 21.8682C19.9062 21.8682 21.8682 19.9063 21.8682 17.5C21.8682 15.0937 19.9062 13.1318 17.5 13.1318ZM17.5 20.1523C16.0371 20.1523 14.8477 18.9629 14.8477 17.5C14.8477 16.0371 16.0371 14.8477 17.5 14.8477C18.9629 14.8477 20.1523 16.0371 20.1523 17.5C20.1523 18.9629 18.9629 20.1523 17.5 20.1523Z"
          fill="white" />
        <path
          d="M22.201 13.6107C22.6035 13.5455 22.8768 13.1663 22.8116 12.7639C22.7463 12.3615 22.3672 12.0881 21.9648 12.1534C21.5623 12.2186 21.289 12.5977 21.3542 13.0002C21.4194 13.4026 21.7986 13.676 22.201 13.6107Z"
          fill="white" />
        
      </symbol>
      
        <use x="0" y="0" width="50" height="50"  xlink:href="#telegram" />    
        <use x="0" y="50" width="50" height="50"  xlink:href="#instagram" />    
    </svg>
    Ответ написан
  • Как правильно добавлять атрибут selected?

    twobomb
    @twobomb
    $percent = 1.5;
    $vals= [0.5,1.5,2.5,3.5,8.5];
    ?>
    <select class="form-select" name="percent" id="percent" required>
    	<?PHP
    	foreach($vals as $v):
    		$text = $v == 8.5?"По умолчанию":"Меньше {$v}%";
    		$c = $v == $percent?"selected":"";
    	?>
    		<option <?=$c?> value="<?=$v?>"><?=$text?></option>
    	<?php
    	endforeach;
    	?>
    </select>
    Ответ написан
    Комментировать
  • HTML для тильды. Как показывать блок по времени и дате с циклом в 3 дня?

    twobomb
    @twobomb
    $(document).ready(function(){
      var now = new Date();
      let timeOffset = now.getTimezoneOffset()*60*1000;
      let timestamp  = now.getTime();
      let timeOpen = 13 ;//открытие 13:00  
      let dateOffset = 0;//Смещение в какой из дней будет показываться 0-2 
      let daysBeetwen = 3;//Каждые 3 дня показывать
      let offset = Math.floor((timestamp-timeOffset)/86400000) % daysBeetwen;
      if( offset == dateOffset && now.getHours() >= timeOpen ||
      		offset == (dateOffset+1)%daysBeetwen && now.getHours() < timeOpen)
          $('#rec411316842').show();
      else
          $('#rec411316842').hide();  
    });

    P.S. Только тут не мск, а время компа юзера. Ну можешь высчитать смещение чтобы было мск. Вообще это делается на сервере, а так при желании юзер всеравно может увидить блок
    p.p.s.
    вычислить мск
    $(document).ready(function(){
      var now =  getMSC();
      let timeOffset = now.getTimezoneOffset()*60*1000;
      let timestamp  = now.getTime();
      let timeOpen = 13 ;//открытие 13:00  
      let dateOffset = 0;//Смещение в какой из дней будет показываться 0-2 
      let daysBeetwen = 3;//Каждые 3 дня показывать
      let offset = Math.floor((timestamp-timeOffset)/86400000) % daysBeetwen;
      if( offset == dateOffset && now.getHours() >= timeOpen ||
      		offset == (dateOffset+1)%daysBeetwen && now.getHours() < timeOpen)
          $('#rec411316842').show();
      else
          $('#rec411316842').hide();  
    });
    
    function getMSC() {
        var d = new Date();
        var utc = d.getTime() + (d.getTimezoneOffset() * 60000);
        var nd = new Date(utc + (3600000*3));
    		return nd;
    }
    Ответ написан
    Комментировать
  • Как рандомно вывести строки из текстового файла по определенному ключу?

    twobomb
    @twobomb
    $rows= file_get_contents("ваш файл.txt");
    $rows = mb_split("\r\n",$rows);
    $rows= array_values(array_filter($rows,function($e){return mb_split("\|",$e)[1] == "busfor";}));
    
    $onlyUnique = true;//доставать только уникальные
    $result = [];
    for($i = 0; $i < 7 && count($rows) > 0;$i++){	
    	$inx =rand(0,count($rows)-1);
    	$result[] = $rows[$inx];
    	if($onlyUnique)
    		array_splice($rows,$inx,1);
    }
    var_dump($result);
    Ответ написан
    2 комментария
  • Как проверить объект на пустоту js?

    twobomb
    @twobomb
    По идее так
    function empty(obj){
    	return Object.keys(obj).length == 0 || Object.keys(obj).every(e=>!obj[e]);
    }
    Ответ написан
    2 комментария
  • Как округлить целое число?

    twobomb
    @twobomb
    https://qna.habr.com/q/1080002#answer_2063264
    Math.round(10000040/100)*100
    Ответ написан
    Комментировать