ぬぬぬ、罠だ!
64bitのOSも絶対64bitのMySQL Connector/ODBC
https://dev.mysql.com/downloads/connector/odbc/
64bitを使うと
「データ ソース名および指定された既定のドライバーが見つかりません」がでます
32bitを使うとすーっと通る
なぜた?!!!
うわー、Officeが32bitじゃん!!バカが!!!っと脱力した…
2016年3月26日土曜日
2015年7月16日木曜日
Could not read chunk size: connection was closed by server
ラベル:
error,
linux,
subversion
subversionでsvn upを打ったら、エラーメッセージが出てきました
svnのタイムアウトを長くして解決できた人もいるみたいだけど、自分の場合そもそも
ソースコードのサイズが大きくので、タイムアウトとは考えにくい。
ゆくゆく調べたら、なんかファイルが壊れてる可能性があるらしい、直す方法は「上書き」です
以上
Could not read chunk size: connection was closed by server
svnのタイムアウトを長くして解決できた人もいるみたいだけど、自分の場合そもそも
ソースコードのサイズが大きくので、タイムアウトとは考えにくい。
ゆくゆく調べたら、なんかファイルが壊れてる可能性があるらしい、直す方法は「上書き」です
例えばmysourecってリポジトリがあるとし、それが壊れている、リポジトリのURLは例えば「http://192.168.1.2/mysource」。
.
..
mysourec
#mkdir clone → まず一時フォルダを作成
#cd clone
#svn co http://192.168.1.2/mysource mysource → そこで一回同じフォルダ名でcheckout
#\cp -rf mysource ../ → 「\」を使うの理由は、cpが「cp -i」 にaliasされている可能性大きい。これでクローンしたソースで問題があったソースを上書きします。
#cd ../mysource
#svn up → 成功したかを確認
# rm -rf clone → 成功したら、クローンフォルダを削除
以上
2015年5月30日土曜日
急にEclipseのBreakPointに止まれなくなった。
急にEclipseのBreakPointで止まれなくなった。
現象:
Optionによって一行目は止まるけど、それ以降全然止まらない、Step InしてもStep Overになります。
試み:
Sessionを止めったり再開したり、Eclipse自体を再起動する、またはOSを再起動、Apacheを再起動しても治らない
罠:
一旦BreakPointsを全部削除して、再設定したら、なぜか直りました…ちくしょー
現象:
Optionによって一行目は止まるけど、それ以降全然止まらない、Step InしてもStep Overになります。
試み:
Sessionを止めったり再開したり、Eclipse自体を再起動する、またはOSを再起動、Apacheを再起動しても治らない
罠:
一旦BreakPointsを全部削除して、再設定したら、なぜか直りました…ちくしょー
2015年4月2日木曜日
特定の列に値が入ってれば、条件付き書式で行ごとを塗りつぶす
エクセルの条件付き書式なかなかわかりづらい。なのでメモ残す。
やりたいこと:
B列からF列まで、一つでも値が入ってれば、B列からJ列まで全部塗りつぶす。

手順:
1.最初の行(5行目)のB列からJ列を選択し、メニューから「条件付き書式」→「新しいルール」をクリック、

2.図のように、「数式を使用して、書式設定するセルを決定」を選択し、数式を入れます:
※最初の「=」は省略できません、「COUNTA」は値が入っているセルの数を統計する、「B」と「F」の左に「$」が付いているのは、列は絶対参照するということです、「5」はその時の行番号です、複数行にこの条件付き書式を適用したいので、「5」の左には「$」を付けないです。
3.そして、塗りつぶしの書式を設定して、OKを押す。
4.最後、「B5:J5」を選択したまま、メニューから「条件付き書式」→「ルールの管理」をクリック、「適用先」は「=$B$5:$J:$5」になっていると思いますが、それを「=$B$5:$J:$33」に変えて「OK」を押す。

5.そうすると、ゴールの「B列からF列まで、一つでも値が入ってれば、B列からJ列まで全部塗りつぶす。」が達成できます。
やりたいこと:
B列からF列まで、一つでも値が入ってれば、B列からJ列まで全部塗りつぶす。

手順:
1.最初の行(5行目)のB列からJ列を選択し、メニューから「条件付き書式」→「新しいルール」をクリック、

2.図のように、「数式を使用して、書式設定するセルを決定」を選択し、数式を入れます:
=COUNTA($B5:$F5)>0
※最初の「=」は省略できません、「COUNTA」は値が入っているセルの数を統計する、「B」と「F」の左に「$」が付いているのは、列は絶対参照するということです、「5」はその時の行番号です、複数行にこの条件付き書式を適用したいので、「5」の左には「$」を付けないです。
3.そして、塗りつぶしの書式を設定して、OKを押す。
4.最後、「B5:J5」を選択したまま、メニューから「条件付き書式」→「ルールの管理」をクリック、「適用先」は「=$B$5:$J:$5」になっていると思いますが、それを「=$B$5:$J:$33」に変えて「OK」を押す。

5.そうすると、ゴールの「B列からF列まで、一つでも値が入ってれば、B列からJ列まで全部塗りつぶす。」が達成できます。

2015年3月12日木曜日
2015年3月2日月曜日
powerpointのイベントを取得
こんななことをやりたい:
・PowerPointのスライドでクリックして、クリックした場所で、入力フォームをたちあげて、入力終わったら、挿入ボタンを押して、入力した内容をshapeとして、挿入点で挿入する。そして、入力内容をコメントに追加する。
クリアしないと行けない難点
1.スライドでクリックするイベントを取得
2.挿入点の座標を取得
むやみにマウスクリックしたら入力フォームが表示されるのもうざいので、モードのON/OFFにします。
さあ、やってみる:
まずPowerPoint(2007)を開く,VBEを立ち上げ(ALT+F11)
クラスを新規追加する、名前は任意、ここでは[cEventClass]とします、下記二行追加。
本当はダブルクリックイベント[PPTEvent_WindowBeforeDoubleClick」を使いたいが、反応ない(BUGだと思います、2007,2010全部だめ見たいが、2003では反応する)シクシク...仕方なく
[PPTEvent_WindowBeforeRightClick]を追加します。
そして、モジュールを追加します。名前は[modEventHandle]とする
訳語を入れるフォームを作成する
ダウンロード後、マクロを信頼して、「TrapEvents」を実行する
・PowerPointのスライドでクリックして、クリックした場所で、入力フォームをたちあげて、入力終わったら、挿入ボタンを押して、入力した内容をshapeとして、挿入点で挿入する。そして、入力内容をコメントに追加する。
クリアしないと行けない難点
1.スライドでクリックするイベントを取得
2.挿入点の座標を取得
むやみにマウスクリックしたら入力フォームが表示されるのもうざいので、モードのON/OFFにします。
さあ、やってみる:
まずPowerPoint(2007)を開く,VBEを立ち上げ(ALT+F11)
クラスを新規追加する、名前は任意、ここでは[cEventClass]とします、下記二行追加。
Option Explicit Public WithEvents PPTEvent As Application右上のドロップダウンリストからイベントが選択できるようになるはず、
本当はダブルクリックイベント[PPTEvent_WindowBeforeDoubleClick」を使いたいが、反応ない(BUGだと思います、2007,2010全部だめ見たいが、2003では反応する)シクシク...仕方なく
[PPTEvent_WindowBeforeRightClick]を追加します。
Private Sub PPTEvent_WindowBeforeRightClick(ByVal Sel As Selection, Cancel As Boolean) '変なとこで右クリックして、エラーなるのを防ぐ為 If Sel.Parent.ActivePane.ViewType <> ppViewSlide Then Exit Sub End If call showTransForm 'Cancelはメニュー出てこないように Cancel = True End Sub
そして、モジュールを追加します。名前は[modEventHandle]とする
Dim cPPTObject As New cEventClass '座標を取得するため Public Declare Function GetCursorPos Lib "user32.dll" (lpPoint As POINTAPI) As Long Dim TrapFlag As Boolean 'マウスXYを格納するuser type Public Type POINTAPI X As Long Y As Long End Type 'Autp_Openという名前にすれば、pptをアドイン形式に保存すれば、開いた直後に実行されるので、 'アドインとして便利です。開発中はppt(pptm)のままにしとこう(注意:一旦ppa,ppamに保存するとソースコード変更できなくなるので、必ずpptバージョンを残してください。アドイン版はrelease時だけにしましょう) Sub Auto_Open() Dim oToolbar As CommandBar Dim oButton As CommandBarButton Dim MyToolbar As String MyToolbar = "kagen Tools" On Error Resume Next Set oToolbar = CommandBars.Add(Name:=MyToolbar, _ Position:=msoBarFloating, Temporary:=True) If Err.Number <> 0 Then ' ツールバー既に存在 Exit Sub End If On Error GoTo ErrorHandler Set oButton = oToolbar.Controls.Add(Type:=msoControlButton) With oButton .DescriptionText = "翻訳モード" .Caption = "Translate(&K)" .OnAction = "TrapEvents" .Style = msoButtonIcon .FaceId = 52 '豚 End With oToolbar.Top = 150 oToolbar.Left = 150 oToolbar.Visible = True NormalExit: Exit Sub ErrorHandler: MsgBox Err.Number & vbCrLf & Err.Description Resume NormalExit: End Sub Public Sub TrapEvents() If TrapFlag = True Then Exit Sub End If Set cPPTObject.PPTEvent = Application TrapFlag = True MsgBox "翻訳モード有効になりました。" & vbNewLine & "右クリックで翻訳を登録する" End Sub Public Sub ReleaseTrap() If TrapFlag = True Then Set cPPTObject.PPTEvent = Nothing Set cPPTObject = Nothing TrapFlag = False MsgBox "翻訳モード無効になりました。" End If End Sub Public Function GetXCursorPos() As Long Dim pt As POINTAPI GetCursorPos pt GetXCursorPos = pt.X End Function Public Function GetYCursorPos() As Long Dim pt As POINTAPI GetCursorPos pt GetYCursorPos = pt.Y End Function Public Sub showTransForm() Dim MouseCursorPosX As Long Dim MouseCursorPosY As Long If ((GetXCursorPos() / (ActiveWindow.View.Zoom / 100)) - 355) < 0 Then MouseCursorPosX = 0 ElseIf ((GetXCursorPos() / (ActiveWindow.View.Zoom / 100)) - 355) > 720 Then MouseCursorPosX = 720 Else MouseCursorPosX = (GetXCursorPos() / (ActiveWindow.View.Zoom / 100)) - 355 End If If ((GetYCursorPos() / (ActiveWindow.View.Zoom / 100)) - 226) < 0 Then MouseCursorPosY = 0 ElseIf ((GetYCursorPos() / (ActiveWindow.View.Zoom / 100)) - 226) > 540 Then MouseCursorPosY = 540 Else MouseCursorPosY = (GetYCursorPos() / (ActiveWindow.View.Zoom / 100)) - 226 End If transForm.m_insertPointX = MouseCursorPosX transForm.m_insertPointY = MouseCursorPosY transForm.Top = MouseCursorPosY transForm.Left = MouseCursorPosX transForm.Show End Sub
訳語を入れるフォームを作成する
'*** Place this code In a User Form *** Option Explicit Private m_clsResizer As CResizer Public m_insertPointX As Long Public m_insertPointY As Long Private Sub cmdCancel_Click() Unload Me End Sub Private Sub cmdInsert_Click() Dim sld As Slide Dim shp As Shape Dim objText As TextRange Dim vntTateS As Variant Dim vntYokoS As Variant Dim vntTate As Variant Dim vntYoko As Variant Dim intY As Integer Dim intX As Integer Dim posOffsetX As Long Dim posOffsetY As Long posOffsetX = 35 posOffsetY = 35 intY = 0 intX = 0 If TextBox1.Text <> "" Then TextBox1.Text = Replace(TextBox1.Text, "|", "|") Set sld = Application.ActiveWindow.View.Slide vntTateS = Split(TextBox1.Text, vbNewLine) For Each vntTate In vntTateS vntYokoS = Split(vntTate, "|") For Each vntYoko In vntYokoS Set shp = sld.Shapes.AddShape(Type:=msoShapeRectangle, Left:=m_insertPointX + intX * posOffsetX, Top:=m_insertPointY + posOffsetY * intY, Width:=40, Height:=25) shp.Fill.ForeColor.RGB = vbWhite shp.Line.Visible = msoFalse shp.TextFrame.TextRange.Font.Color = vbBlack shp.TextFrame.WordWrap = msoFalse shp.TextFrame.TextRange.Font.Size = 11 shp.TextFrame.AutoSize = ppAutoSizeShapeToFitText shp.TextFrame.TextRange.Text = vntYoko intX = intX + 1 Next intY = intY + 1 Next Set objText = sld.NotesPage.Shapes.Placeholders(2).TextFrame.TextRange objText.Text = objText.Text & IIf(objText.Text <> "", vbNewLine, "") & TextBox1.Text End If Unload Me End Sub Private Sub UserForm_Initialize() 'Call RemoveCaption(Me) With Me .StartUpPosition = 0 .Top = 175 .Left = Application.Left + Application.Width - Me.Width * 2 End With Set m_clsResizer = New CResizer m_clsResizer.Add Me End Sub Private Sub UserForm_Resize() TextBox1.Width = transForm.Width - 6 TextBox1.Height = IIf(transForm.Height - 47 < 63, 63, transForm.Height - 47) cmdInsert.Top = TextBox1.Top + TextBox1.Height + 4 cmdCancel.Top = TextBox1.Top + TextBox1.Height + 4 cmdInsert.Left = 492 cmdCancel.Left = 396 End Sub Private Sub UserForm_Terminate() Set m_clsResizer = Nothing End Subフォームをリサイズできるためのクラス
Option Explicit Private Const MFrameResizer = "FrameResizeGrab" Private Const MResizer = "ResizeGrab" Private WithEvents m_objResizer As MSForms.Frame Private m_sngLeftResizePos As Single Private m_sngTopResizePos As Single Private m_blnResizing As Single Private WithEvents m_frmParent As MSForms.UserForm Private m_objParent As Object Private Sub Class_Terminate() m_objParent.Controls.Remove MResizer End Sub Private Sub m_frmParent_Layout() If Not m_blnResizing Then With m_objResizer .Top = m_objParent.InsideHeight - .Height .Left = m_objParent.InsideWidth - .Width End With End If End Sub Private Sub m_objResizer_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single) If Button = 1 Then m_sngLeftResizePos = X m_sngTopResizePos = Y m_blnResizing = True End If End Sub Private Sub m_objResizer_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single) If Button = 1 Then With m_objResizer .Move .Left + X - m_sngLeftResizePos, .Top + Y - m_sngTopResizePos m_objParent.Width = m_objParent.Width + X - m_sngLeftResizePos m_objParent.Height = m_objParent.Height + Y - m_sngTopResizePos .Left = m_objParent.InsideWidth - .Width .Top = m_objParent.InsideHeight - .Height End With End If End Sub Private Sub m_objResizer_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single) If Button = 1 Then m_blnResizing = False End If End Sub Public Function Add(Parent As Object) As MSForms.Frame ' ' add resizing control to bottom righthand corner of userform ' Dim labTemp As MSForms.Label Set m_frmParent = Parent Set m_objParent = Parent Set m_objResizer = m_objParent.Controls.Add("Forms.Frame.1", MFrameResizer, True) Set labTemp = m_objResizer.Add("Forms.label.1", MResizer, True) With labTemp With .Font .Name = "Marlett" .Charset = 2 .Size = 14 .Bold = True End With .BackStyle = fmBackStyleTransparent .AutoSize = True .BorderStyle = fmBorderStyleNone .Caption = "o" .MousePointer = fmMousePointerSizeNWSE .ForeColor = RGB(100, 100, 100) .ZOrder .Top = 1 .Left = 1 .Enabled = False End With With m_objResizer .MousePointer = fmMousePointerSizeNWSE .BorderStyle = fmBorderStyleNone .SpecialEffect = fmSpecialEffectFlat .ZOrder .Caption = "" .Width = labTemp.Width + 1 .Height = labTemp.Height + 1 .Top = m_objParent.InsideHeight - .Height .Left = m_objParent.InsideWidth - .Width End With End Functionサンプル
ダウンロード後、マクロを信頼して、「TrapEvents」を実行する
違うIPセグメントの間のIP Messager Exchange Serverの作り方、社内のLANチャットツール
ラベル:
linux
・ここからダウンロード
wget http://smart-pda.net/isourou/ipmsg/exchange/package/ipmsgex-0.2.12-perl.tar.gz
・解凍
tar xzvf ipmsgex-0.2.12-perl.tar.gz
・移動(しなくでもいい)
mv ipmsgex-0.2.12-perl /usr/local/
cd /usr/local/ipmsgex-0.2.12-perl/
・権限関係
chmod 755 ipmsgex.pl
chmod 666 Conf.pm
chmod 666 Cron.pm
chmod 600 ipmsgex.conf
chmod -R 666 Ipmsg/
chmod -R 444 readme/
・Perlの場所を確認
which perl
/usr/bin/perl
vi ipmsgex.pl
一行目は状況に応じて変更
#!/usr/bin/perl
・設定
vi ipmsgex.conf
文字コードの関係で文字化けの場合は
vi -c ":e ++enc=euc-jp" ipmsgex.conf
サーバ自分のIP
BindAddr[0] = '192.168.25.108'
仲介したいIPセグメント
BroadCast[0] = '192.168.25.0/255.255.255.0'
BroadCast[1] = '192.168.24.0/255.255.255.0'
BroadCast[2] = '192.168.23.0/255.255.255.0'
BroadCast[3] = '192.168.22.0/255.255.255.0'
BroadCast[4] = '192.168.21.0/255.255.255.0'
・起動スクリプトを作成
vi /etc/init.d/ipmsgexd
-------------------------------------------------------------------
#!/bin/bash
PATH=/bin:/usr/bin:/sbin:/usr/sbin
case "$1" in
start)
echo -n "Starting IP Messager Exchange Server...\n"
cd /usr/local/ipmsgex-0.2.12-perl
perl ipmsgex.pl
;;
*)
echo "Usage: /etc/init.d/ipmsgexd start"
exit 1
;;
esac
exit 0
-------------------------------------------------------------------
・起動に追加
vi /etc/rc.d/rc.local
/etc/init.d/ipmsgexd start
後はクライアント側でサーバを設定する
以上
登録:
投稿 (Atom)