popoverAPIサンプル

<button popovertaegrt="popover" popovertargetaction="show" class="popover-open">ポップオーバーを開く</button>
<div id="popover" popover class="popovertarget">
  <div>ポップオーバー</div>
  <button popovertaegrt="popover" popovertargetaction="hide" class="popover-close">ポップオーバーを閉じる</button>
</div>

文字列置換のいろいろ

import re

purePath = r'C:\Users\oki44\Documents\maya\projects\default'
filePath = re.sub(r'\\', '/', purePath) + '/'
fileName = 'fishSurf.xml'
importSkinWeight(filePath, fileName)


purePath = r'C:\Users\oki44\Documents\maya\projects\default'
filePath = purePath.replace("\\", "/") + '/'
fileName = 'fishSurf.xml'
importSkinWeight(filePath, fileName)

ChatGPT - JSON Mode

[**LINK TO RELEVANT DOCUMENTATION**](https://platform.openai.com/docs/guides/text-generation/json-mode)
"""
https://platform.openai.com/docs/guides/text-generation/json-mode
"""

import os

from dotenv import load_dotenv
from openai import OpenAI


# Instanciate and set the client
load_dotenv()
client = OpenAI(api_key = os.getenv("OPENAI_API_KEY"))

# Go by hand
completion = client.chat.completions.create(
  model = "gpt-3.5-turbo-0125",
  response_format = {"type": "json_object"},
  messages = [
    {"role": "system", "content": "You are a helpful assistant designed to output JSON."},
    {"role"

ChatGPT - Structured to Unstructured

"""
Example
Your accountant gives you a data sheet.
Your job is to write the quarterly earnings report!
"""

import json
import os

from dotenv import load_dotenv
from openai import OpenAI


# Instanciating and setting the client
load_dotenv
client = OpenAI(api_key = os.getenv("OPENAI_API_KEY"))


# Set the constant system prompt for the task
SYSTEM_PROMPT = "You are an assistant that writes concise, detailed, " +\
  "and factual quarterly earnings reports given structured data."
  
# Regular co

ChatGPT - Unstructured to Structured

import json
import os
from pprint import pprint

from dotenv import load_dotenv
from openai import OpenAI


# Instanciate and configure client
load_dotenv()
client = OpenAI(api_key = os.getenv("OPENAI_API_KEY"))

# Define the constant prompt for system
SYSTEM_PROMPT = "You are an assistant that returns only JSON " +\
  "objects with the resquested information."

# Usual functions
def complete(user_prompt):
  completion = client.chat.completions.create(
    model = "gpt-3.5-turbo",
    messages =

Show Dialog with Inputbox with default text highlighted

Documentação: [DOpus.Dlg](https://docs.dopus.com/doku.php?id=reference:scripting_reference:scripting_objects:dialog) Eu tive que fazer a minha própria função porque a função GetString, que o Directory Opus fornece, não permite que o texto default do input box venha já selecionado/highlighted para você poder escrever outra coisa no lugar sem precisar selecionar o que estava escrito e apagar. The return value is the entered string, or an empty value if the dialog was cancelled. The index of the button selected by the user will be available via the result property once this method returns. The left-most button is index 1, the next button is index 2, and so on. If a dialog has more than one button then by definition the last (right-most) button is the "cancel" button and so this will return index 0. Onde usei: **_CLIPBOARD_Paste_Smart**
function askUser(strTitle, strMessage, strDefaultValue, strButtons, strIcon) {
	var dlg = clickData.func.Dlg;
	dlg.window = clickData.func.sourcetab;
	dlg.title = strTitle;
	dlg.message = strMessage;
	dlg.buttons = strButtons;
	dlg.icon = strIcon; // warning error info question
	dlg.max = 0; // Faz com que o dlg seja do tipo input box. Se colocar um número maior do que 0, limita a quantidade de caracteres que podem ser escritos.
	dlg.defvalue = strDefaultValue;
	dlg.select = true; // Fa

Get file extension

var strFile_name = 'C:\Windows\notepad.exe'
var strFileExtension = getFileExtension(strFile_name);

function getFileExtension(fileName) {
    // Mesmo que o nome do arquivo tenha vários pontos, pega apenas o último em diante
    // Cacher Setup 2.47.3.exe
    // retorna apenas .exe
	return /\.[^\.]+$/.test(fileName);
}

Test if file or path exists

Documentação: - [DOpus.FSUtil](https://docs.dopus.com/doku.php?id=reference:scripting_reference:scripting_objects:fsutil).Exists (return bool) - verifica se o path existe. Path pode ser: - Absoluto: C:\\Windows - Absoluto: C:\\Windows\\ - Absoluto: C:\Windows\notepad.exe - Relativo: ..\\.. - Relativo: ..\\notepad.exe - URI: file:///C:/ - HTTP: http://www.microsoft.com - HTTPS: https://www.microsoft.com - FTP: ftp://ftp.microsoft.com - Windows Library: lib://Documents - EnvironmentVvariable: %USERPROFILE% - Directory Opus external control code: {sourcepath} - Directory Opus Collection: coll://Marked Pictures/Fotos Filhos - Directory Opus Alias: /mydocuments
if (DOpus.FSUtil.Exists(strPath)) {
	DOpus.Output('Existe o Path');
}

Resumo Hotstrings

Documentação Útil: - [Hotstrings](https://www.autohotkey.com/docs/v2/Hotstrings.htm) - [Send / SendRaw / SendInput / SendPlay / SendEvent](https://www.autohotkey.com/docs/v2/lib/Send.htm) **Opções:** - **\*** não precisa se Espaço, pontuação nem Enter para ativar o hotstring - **?** faz o hostring funcionar mesmo no meio de outra palavra - **b0** não apaga a abreviação **Caracteres especiais** | Caractere | Usar | | -----------|:-----| | { | {{} | | } | {}} | **Teclas** | Tecla | Usar | | -----------|:---------| | Enter | {Enter} | | Seta p/ Esquerda 3x | {Left 3} | | Backspace x2 | {bs 2} |
; Escreve um template de if e posiciona o cursor na condição, isto é, entre os parenteses.
:*:if\::if () {{}{Enter 2}{}}{Up 2}{End}{Left 3}


; "\ vira ""
:*b0:"\::""{Left}{bs 2}
; '\ vira ''
:*b0:'\::''{Left}{bs 2}
; % x2
:*b0:%%::{Left}
; ()
:?*b0:()::{Left}
; []
:?*b0:[]::{Left}
; {}
:?*b0:{}::{Left}
; && -> &  & 
:*:&&::&  & {Left 3}

felipe

inicio{
"host":"A29184E174EA7DEC73C2ADE86DF571",
"porta":"9A9382E77CEB"
}fim

Analyze Windows Side-by-Side (WinSxS)

$PathFromCBSLog = '\??\C:\WINDOWS\SysWOW64\\srmlib.dll'
$FileUnicodePath = $PathFromCBSLog.Replace('\??', '\\?')
$FileName = [System.IO.Path]::GetFileName($FileUnicodePath)
$ActualFileHash = Get-FileHash -Path $FileUnicodePath | Select-Object -ExpandProperty Hash
$ExpectedFileHash = '7b163daf659c1198e3a8c9acb7b2e7324e4c764599997bdea4286987f4533738'

$WinSxSFiles = [System.IO.Directory]::EnumerateFiles("$($env:windir)\WinSxS", $FileName, 'AllDirectories') | ForEach-Object { [System.IO.FileI

Tribonacci

/**
 * @param {number} n
 * @return {number}
 */
var tribonacci = function(n) {
    // Initialize an array with the base cases.
    let trib = [0, 1, 1];

    // If n is less than 3, return the nth number in the base cases.
    if (n < 3) {
        return trib[n];
    }

    // Calculate the nth Tribonacci number.
    for (let i = 3; i <= n; i++) {
        // The current Tribonacci number is the sum of the previous three numbers.
        trib[i] = trib[i - 1] + trib[i - 2] + trib[i - 3];
    }

CLIPBOARD - Smart Paste

**Controla o comportamento quando você faz Paste (CTRL + V) no Directory Opus, dependendo do conteúdo do clipboard:** Se o clipboard contém: - URL - cria um arquivo .url de atalho para o endereço de internet. - Path - qualquer endereço de arquivo, diretório, absoluto ou relativo, coleção, biblioteca, alias, FTP bookmark, Environment Variable, URI compatível com o Directory Opus. - Se o caminho for do tipo arquivo ou diretório absoluto, e tal não existir, aborta o script. - Texto - grava o texto em um arquivo UTF-8. (código nativo do Directory Opus) - Imagem - grava a imagem em um arquivo PNG. (código nativo do Directory Opus) - Arquivos - cola os arquivos. (código nativo do Directory Opus)
// **Controla o comportamento quando você faz Paste (CTRL + V) no Directory Opus, dependendo do conteúdo do clipboard:**
// 
// Se o clipboard contém:
// - URL - cria um arquivo .url de atalho para o endereço de internet.
// - Path - qualquer endereço de arquivo, diretório, absoluto ou relativo, coleção, biblioteca, alias, FTP bookmark, Environment Variable, URI compatível com o Directory Opus.
//   - Se o caminho for do tipo arquivo ou diretório absoluto, e tal não existir, aborta o script

SQL Fast Row Counts

SELECT s.name AS [Schema], t.name AS [Table], i.rowcnt AS [Rows]
FROM sysindexes AS i
  INNER JOIN sysobjects AS o ON i.id = o.id
  INNER JOIN sys.tables AS t ON t.object_id = o.id
  INNER JOIN sys.schemas AS s ON s.schema_id = t.schema_id
WHERE i.indid < 2  AND OBJECTPROPERTY(o.id, 'IsMSShipped') = 0
ORDER BY s.name, t.name

mac 使用外接式硬碟 ntfs 格式

mac 使用外接式硬碟 ntfs 格式
## 當外接式硬碟格式是 ntfs 時,mac 要怎麼寫資料到 ntfs 格式的硬碟內?

#### 安裝支援 ntfs 套件
```
brew install --cask macfuse
brew install ntfs-3g-mac
```
裝完之後,查看硬碟資訊

diskutil list
```
/dev/disk2 (external, physical):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:     FDisk_partition_scheme                        *2.0 TB     disk2
   1:               Windows_NTFS macFUSE Volume 0 (nt... 2.0 TB     disk2s1
```
#### 掛載它,需要 root 權限


```
sudo /usr/local/bin/ntfs-3g /dev/disk2s1 /Volumes/NT

Responsive classes

$positions: (
    static: 'static',
    relative: 'relative',
    absolute: 'absolute',
    fixed: 'fixed',
    stick: 'sticky'
);

$grid-breakpoints: (
  xs: 0,
  sm: 576px,
  md: 768px,
  lg: 992px,
  xl: 1200px,
  xxl: 1400px
);

@each $name, $position in $positions {
  @each $modifier, $breakpoint in $grid-breakpoints {
    @media screen and (min-width: #{$breakpoint}) {
        .position-#{$modifier}-#{$name} {
            position: #{$name} !important;
        }