Skip to content

Instantly share code, notes, and snippets.

View teramotodaiki's full-sized avatar

teramotodaiki teramotodaiki

View GitHub Profile
@teramotodaiki
teramotodaiki / index.js
Created September 21, 2023 09:56
Azure OpenAI SDKをCloudflare Workerで利用するためのモンキーパッチ
/*
Azure OpenAI SDK(@azure/openai)をCloudflare Workerで利用するとこういうエラーが出る
Trace: RestError: Error sending request: The 'credentials' field on 'RequestInitializerDict' is not implemented.
at getError (file:///private/var/folders/32/.../T/.../index.js:3407:12)
at FetchHttpClient.sendRequest (file:///private/var/folders/32/.../T/.../index.js:3317:13) {
name: RestError,
code: REQUEST_SEND_ERROR,
statusCode: undefined,
request: PipelineRequestImpl,
@teramotodaiki
teramotodaiki / chatgpt.js
Created December 6, 2022 01:54
ChatGPTがIME未確定の時にエンターキーを押すと送信してしまう挙動をやめるやつ
const textarea = document.querySelector('textarea[data-id="root"]');
textarea?.addEventListener(
"keydown",
(event) => {
if (event.key === "Enter" && event.isComposing) {
event.stopPropagation();
}
},
{ capture: true }
);
@teramotodaiki
teramotodaiki / production-experiment-hackforplay-helpfeel.js
Last active April 2, 2021 06:50
このスクリプトは本番環境で動いているので変なことは書かない
console.log('production-experiment-hackforplay-helpfeel.js')
console.log('update')
import 'dart:typed_data';
import 'package:flutter/material.dart';
import 'dart:ui' as ui;
class IOSStatusBarBlack extends StatelessWidget {
IOSStatusBarBlack();
@override
Widget build(BuildContext context) {
return CustomPaint(painter: IOSStatusBarBlackPainter());
あそべるプログラミングハックフォープレイは、プログラミングの楽しさを伝えるために、2014年に当時現役の高専生だった寺本が開発し、起業しました。
その独創的なプログラムにより、これまでに1万人以上の子どもたちがプログラミングのとりこになっています。近年様々なサービスが乱立していますが、本当にプログラミングの楽しさが分かるサービスはほとんどありません。ハックフォープレイなら、本当のプログラミングの楽しさが分かります。
まずは、ゲームで遊んでいただきます。でもただのゲームではありません。“プログラミングをしないとクリアできないゲーム”です。子どもたちはゲームをクリアしようとして、いつの間にかプログラミングを学んでしまうのです。
クリアしてからが本番です。今度は、自分がゲームを作る側になってもらいます。ゲームを作るなんて難しそうだと思われるかも知れません。しかし、ハックフォープレイ公式 YouTuber TANI による面白くて分かりやすい解説動画や、ハックフォープレイが長年研究開発してきた専用のエディタがあるので、驚くほど簡単にゲームが作れます。
よくワークショップを開くのですが、スイスイ覚えてしまうお子さんの圧倒的な吸収力に、どの親御さんも目を見張るほどです。
そして、作ったゲームを公開します。ここから先はもう、子どもたちの独壇場。他の子どもが作った作品に影響されてテクニックを盗んだり(注:良い事です)、自分の作品が YouTube に取り上げられて狂喜乱舞したり、全国一斉にハックフォープレイをする「ハックフォープレイフェス」に参加してあっと驚くような作品を作り上げたりと、短期間でメキメキと成長していきます。ハックフォープレイでプログラミングの基本的な考え方を身につけたあとは、ハックフォープレイと同じ JavaScript を極めてウェブサイトを開発したり、Unity で 3D ゲーム開発に挑戦したりと、卒業後にテキストプログラミングに移行しやすいのもポイントです。
ぜひ、この機会にハックフォープレイを始めてみてください!
import '../game'
rule.this = 'まほうじん'
rule.つくられたとき(async function() {
await this.costume('まほうじん') // 見た目をかえる
/*+ つくられたとき */
this.n('みえやすさ', ('▼ を', 'イコール'), 0) // とうめいになる
React.useEffect(() => {
function onChange(instance: CodeMirror.Editor) {
if (!definition) return; // 定義ファイルのロードが済んでいない
const age = ++ageRef.current; // 前回までの処理をキャンセルさせる
const makeWidget = makeWidgetRoutine(instance, definition, hint);
const widgets = [] as WidgetBase[];
(function step() {
window.requestIdleCallback(
deadline => {
if (age !== ageRef.current) {
import { Button, Dialog, DialogActions, DialogTitle } from '@material-ui/core';
import * as React from 'react';
import { Subject } from 'rxjs';
export interface IConfirm {
title: string;
ok: string;
cancel: string;
resolve: (ok: boolean) => void;
}
import '../game'
rule.this = '黒色のタマゴ'
rule.つくられたとき(async function() {
await this.costume('黒色のタマゴ') // 見た目をきめる
this.family = ('▼ なかま', Family.モンスター) // なかまをきめる
this.n('たいりょく', ('▼ を', 'イコール'), 3) // 体力をきめる
this.n('こうげきりょく', ('▼ を', 'イコール'), 1) // こうげき力をきめる
@teramotodaiki
teramotodaiki / useLocale.ts
Created May 25, 2019 14:15
Simple localize function implements with React and rxjs
import { BehaviorSubject } from 'rxjs';
import { useState, useEffect } from 'react';
export type LocaleKeys = 'Press any key' | 'Touch to start';
export type Locale = { [key in LocaleKeys]: string };
const localeMap: {
[locale: string]: Locale;
} = {
en: {