最近すっかり見かけなくなったJavaのデスクトップアプリですが、たまにグラフィックドライバとの相性のせいか、画面が乱れてしまうことがあります。その場合は、アプリ(Java)の起動オプションに下記を追記しましょう。
-Dsun.java2d.noddraw=true
DirectDrawの使用を無効にすることで解決できる場合があります。
情報工学技術を利用した教育支援、いわゆる教育工学の研究やってます。研究に関係する技術動向(プログラミングねた)や、日常の覚書き、呟きなどを書いていこうかと思います。今のところ、初歩的なプログラムネタばっかりですが、、、、長い目でお付き合いください。
最近すっかり見かけなくなったJavaのデスクトップアプリですが、たまにグラフィックドライバとの相性のせいか、画面が乱れてしまうことがあります。その場合は、アプリ(Java)の起動オプションに下記を追記しましょう。
-Dsun.java2d.noddraw=true
DirectDrawの使用を無効にすることで解決できる場合があります。
初歩的な話ですが、、、数式に基づいてグラフ作成しようと思ったら、表題のように
下記のようにすればOK。
#reshapeする | |
x = df.iloc[:, i] | |
x=x.values.reshape(-1,1) | |
#または、np.arrayで変換する | |
x = np.array(df.iloc[:, i]) |
後期に入って、オンライン実験に取り組んでおり、ブレイクアウトルームを使ってグループで実験に取り組ませています。時々、「画面共有ができません」という学生がちらほら。。現象をまとめると
表題の件を実現するためには、
sudo apt update
sudo apt upgrade -y
sudo apt install build-essential -y
最後のbuild-essential というパッケージが肝で、開発関係の基本的なツールが自動的に入るので便利です。この作業が終わったら、
gcc --version
と打ってみて、gccが入っていることを確認してください。
エディターの用意
エディターは、自分の好きなのを選べばいいです。個人的には、
がオススメです。便利な拡張機能が揃っており、特に
一般的にWordなどで、レポート、報告書、論文を書くとき、「数式」を入力する時は数式エディターを用います。が、Googleドキュメントやスライドには今のところ数式を入れる機能がありません。Googleスプレッドシートには数式の機能がありますが、ちょっと貧弱です。
結論から言うと、数式を画像化して貼り付けるのがべたーな方法ですが、Wordの数式エディタは画像としてペーストできない問題があります。
表題のとおりのTIPSです。下記のようにVBScriptファイルを別途用意してそれを起動すればOKということですね。
Set objWShell = CreateObject("Wscript.Shell") | |
objWShell.run "cmd /c xxxxx.bat", vbHide |
def OJEncoder(obj): | |
class MyEncoder(JSONEncoder): | |
def default(self, o): | |
return o.__dict__ | |
return MyEncoder(ensure_ascii=False).encode(obj) |
# -*- coding: utf-8 -*- | |
# use tiffile library | |
# https://pypi.org/project/tifffile/ | |
import pyrealsense2 as rs | |
import numpy as np | |
import tifffile | |
#1280*720 | |
resX=1280 | |
resY=720 | |
# Configure depth and color streams | |
pipeline = rs.pipeline() | |
config = rs.config() | |
config.enable_device_from_file('depth10sec.bag') | |
config.enable_stream(rs.stream.depth, resX, resY, rs.format.z16, 30) | |
# Init | |
profile = pipeline.start(config) | |
playback = profile.get_device().as_playback() | |
playback.set_real_time(False) # <--- very important setting to get all frames | |
depth_sensor = profile.get_device().first_depth_sensor() | |
depth_scale = depth_sensor.get_depth_scale() | |
count=0 | |
oldTimeStamp=0 | |
try: | |
# for first frame | |
frames = pipeline.wait_for_frames() | |
depth_frame = frames.get_depth_frame() | |
currentTimestamp = depth_frame.timestamp | |
i=0 | |
while (True): | |
depth_frame = frames.get_depth_frame() | |
if not depth_frame: | |
continue | |
# Get Depth data | |
depth_image = np.asanyarray(depth_frame.get_data()) | |
#Save multi-Tiff | |
tifffile.imsave('depth16.tif', depth_image, compress=6, append=True) | |
print(i) | |
i +=1 | |
# フレーム待ち(Depth & Color) | |
frames = pipeline.wait_for_frames() | |
depth_frame = frames.get_depth_frame() | |
oldTimeStamp=currentTimestamp | |
currentTimestamp = depth_frame.timestamp | |
if oldTimeStamp>=currentTimestamp: | |
break | |
finally: | |
pipeline.stop() |
var selection = DocumentApp.getActiveDocument().getSelection(); | |
if (selection) { | |
var elements = selection.getRangeElements(); | |
text= elements[0].getElement().asText().getText(); | |
text = text.substring(elements[0].getStartOffset(),elements[0].getEndOffsetInclusive()); | |
DocumentApp.getUi().alert(text); | |
} |
function getClassList(){ | |
var optionalArgs = { | |
pageSize: 100 //クラスの数が多い場合はここを増やす | |
}; | |
var response = Classroom.Courses.list(optionalArgs); | |
var courses = response.courses; | |
if (courses && courses.length > 0) { | |
for (i in courses) { | |
var course = courses[i]; | |
Logger.log(course.name); | |
Logger.log(course.id); | |
} | |
return course; | |
} else { | |
Logger.log('クラスが見つかりません'); | |
return null; | |
} | |
} |
function assignScriptToImage() { | |
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); | |
var images =sheet.getImages(); | |
images[0].assignScript("test"); | |
} | |
function test(){ | |
Browser.msgBox("aaa"); | |
} |
google.auth.exceptions.DefaultCredentialsError: Could not automatically determine credentials. Please set GOOGLE_APPLICATION_CREDENTIALS or explicitly create credential and re-run the application.
import firebase_admin | |
from firebase_admin import credentials | |
from firebase_admin import firestore | |
import os | |
#環境変数 | |
os.environ['GOOGLE_APPLICATION_CREDENTIALS'] = './xxxxx-credentials.json' | |
#credentialsの読み込み | |
cred = credentials.Certificate('xxxxx-credentials.json') | |
firebase_admin.initialize_app(cred) | |
db = firestore.Client() |
root=tk.Tk() | |
root.title("RGB Recorder") | |
root.geometry("800x600") | |
root.resizable(width=False, height=False) | |
canvas=tk.Canvas(root, width=640, height=480, bg="white") | |
canvas.pack() | |
def update():#update | |
global img | |
global camera | |
ret, frame =camera.read() | |
#TkInterで表示できる形式に変換する | |
img=ImageTk.PhotoImage(Image.fromarray(cv2.cvtColor(frame, cv2.COLOR_BGR2RGB))) | |
canvas.create_image(w/2,h/2,image=img) | |
root.after(1,update) #本関数を再帰的に呼び出す | |
#Cameraの設定などは省略してます | |
update() | |
root.mainloop() |
#!/usr/bin/env python | |
from PIL import Image | |
import cv2 as cv | |
# FPS | |
fps = 30 | |
# Frame size | |
WIDTH=1920 | |
HEIGHT=1080 | |
size = (WIDTH, HEIGHT) | |
#Setting recording format | |
fourcc = cv.VideoWriter_fourcc(*'XVID') | |
#fourcc = cv.VideoWriter_fourcc('M', 'J', 'P', 'G') | |
#Recording file Setting | |
video = cv.VideoWriter('sample.avi', fourcc, fps, size) | |
#Camera Setting | |
camera = cv.VideoCapture(0) | |
camera.set(cv.CAP_PROP_FRAME_WIDTH, WIDTH) | |
camera.set(cv.CAP_PROP_FRAME_HEIGHT, HEIGHT) | |
try: | |
while True: | |
#frame read | |
_, frame = camera.read() | |
cv.imshow('image', frame) | |
#record frame | |
video.write(frame) | |
key = cv.waitKey(1) | |
if key == 27: # ESC key for closing | |
video.release() | |
f.close() | |
break | |
except KeyboardInterrupt: | |
print("Close me? -> Enter ESC") |
import pyrealsense2 as rs | |
import numpy as np | |
import cv2 | |
# Configulation of Realsense | |
config = rs.config() | |
#The case of reading from bag gile | |
config.enable_device_from_file('xxxx.bag') | |
config.enable_stream(rs.stream.depth, 640, 480, rs.format.z16, 30) | |
config.enable_stream(rs.stream.color, 640, 480, rs.format.bgr8, 30) | |
# start | |
pipeline = rs.pipeline() | |
pipeline.start(config) | |
try: | |
while True: | |
frames = pipeline.wait_for_frames() | |
color_frame = frames.get_color_frame() | |
depth_frame = frames.get_depth_frame() | |
if not color_frame or not depth_frame: | |
continue | |
# translation to OpenCV Format | |
color_image = np.asanyarray(color_frame.get_data()) | |
depth_image = np.asanyarray(depth_frame.get_data()) | |
# depth image to Colormap | |
depth_colormap = cv2.applyColorMap(cv2.convertScaleAbs(depth_image, alpha=0.08), cv2.COLORMAP_JET) | |
# Show Color images | |
cv2.namedWindow('color_image', cv2.WINDOW_AUTOSIZE) | |
cv2.imshow('color_image', color_image) | |
# Show Depth images | |
cv2.namedWindow('depth_image', cv2.WINDOW_AUTOSIZE) | |
cv2.imshow('depth_image', depth_colormap) | |
#enter q key to exit | |
key = cv2.waitKey(1) & 0xff | |
if key == ord("q"): | |
break | |
#If it does not work, try below code | |
#cv2.waitKey(1) | |
finally: | |
pipeline.stop() |
Sub test() | |
With Range("A1:A10") | |
.SetPhonetic | |
.Phonetics.Visible = True | |
End With | |
End Sub |