Home
Trees
Indices
Help
Python Lacewing Library
[
frames
] |
no frames
]
Identifier Index
[
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
_
]
A
acceptChannelJoin()
(in
MooServerProtocol
)
acceptConnection()
(in
ServerProtocol
)
addConnection()
(in
Channel
)
acceptChannelJoin()
(in
ServerProtocol
)
acceptLogin()
(in
ServerProtocol
)
addConnection()
(in
Channel
)
acceptChannelLeave()
(in
MooServerProtocol
)
acceptMasterAction()
(in
ServerProtocol
)
addConnection()
(in
ServerChannel
)
acceptChannelLeave()
(in
ServerProtocol
)
acceptNameChange()
(in
MooServerProtocol
)
addPeer()
(in
Response
)
acceptChannelListRequest()
(in
ServerProtocol
)
acceptNameChange()
(in
ServerProtocol
)
AssignedID
(in
lacewing.moo.packetloaders.server
)
acceptChannelMessage()
(in
MooServerProtocol
)
acceptPrivateMessage()
(in
MooServerProtocol
)
autoClose
(in
ServerChannel
)
acceptChannelMessage()
(in
ServerProtocol
)
acceptPrivateMessage()
(in
ServerProtocol
)
acceptConnection()
(in
MooServerProtocol
)
action
(in
ChannelMaster
)
B
baseloader
(in
lacewing
)
BinaryPeerMessage
(in
lacewing.packetloaders.server
)
buffer
(in
ByteReader
)
BaseProtocol
(in
lacewing.protocol
)
BinaryServerChannelMessage
(in
lacewing.packetloaders.server
)
BYTE
(in
lacewing.bytereader
)
BINARY
(in
lacewing.moo.packetloaders.message
)
BinaryServerMessage
(in
lacewing.packetloaders.client
)
byteflag
(in
lacewing
)
BinaryChannelMessage
(in
lacewing.packetloaders.client
)
BinaryServerMessage
(in
lacewing.packetloaders.server
)
bytereader
(in
lacewing
)
BinaryChannelMessage
(in
lacewing.packetloaders.server
)
bitdict
(in
lacewing
)
ByteReader
(in
lacewing.bytereader
)
BinaryPeerMessage
(in
lacewing.packetloaders.client
)
BitDict
(in
lacewing.bitdict
)
C
ChangeName
(in
lacewing.moo.packetloaders.client
)
channelLeft()
(in
ClientProtocol
)
ClientChannel
(in
lacewing.client
)
changeName()
(in
MooClientProtocol
)
channelLeft()
(in
MooClientProtocol
)
ClientDatagram
(in
lacewing.client
)
changeName()
(in
MooServerProtocol
)
channelLeft()
(in
MooServerProtocol
)
ClientMessage
(in
lacewing.moo.packetloaders.client
)
Channel
(in
lacewing.moo.client
)
channelLeft()
(in
ServerProtocol
)
ClientPacket
(in
lacewing.moo.packet
)
channel
(in
Player
)
channelListing
(in
ServerFactory
)
ClientPacket
(in
lacewing.packet
)
Channel
(in
lacewing.moo.server
)
channelListSent()
(in
ServerProtocol
)
ClientProtocol
(in
lacewing.client
)
channel
(in
ChannelMaster
)
ChannelMaster
(in
lacewing.packetloaders.client
)
common
(in
lacewing.moo.packetloaders
)
channel
(in
Request
)
channelMessageReceived()
(in
ClientProtocol
)
common
(in
lacewing.packetloaders
)
channel
(in
Peer
)
channelMessageReceived()
(in
MooClientProtocol
)
CONNECT
(in
lacewing.packetloaders.common
)
channel
(in
Response
)
channelMessageReceived()
(in
MooServerProtocol
)
connection
(in
ClientDatagram
)
CHANNEL_DATA
(in
lacewing.packetloaders.client
)
channelMessageReceived()
(in
ServerProtocol
)
connection
(in
Channel
)
CHANNEL_FLAGS
(in
lacewing.packetloaders.client
)
channelName
(in
JoinChannel
)
connectionAccepted()
(in
ClientProtocol
)
CHANNEL_ID
(in
lacewing.packetloaders.server
)
channelName
(in
ChannelJoined
)
connectionAccepted()
(in
MooClientProtocol
)
CHANNEL_LIST
(in
lacewing.packetloaders.common
)
ChannelPeer
(in
lacewing.packetloaders.server
)
connectionAccepted()
(in
MooServerProtocol
)
CHANNEL_LIST_DATA
(in
lacewing.packetloaders.server
)
channelPool
(in
MooServerFactory
)
connectionAccepted()
(in
ServerProtocol
)
CHANNEL_MASTER_DATA
(in
lacewing.packetloaders.client
)
channelRemoved()
(in
ServerFactory
)
connectionLost()
(in
MooServerProtocol
)
CHANNEL_MESSAGE_DATA
(in
lacewing.packetloaders.client
)
channels
(in
MooProtocol
)
connectionLost()
(in
ServerProtocol
)
CHANNEL_MESSAGE_DATA
(in
lacewing.packetloaders.server
)
channels
(in
MooServerFactory
)
connectionMade()
(in
ClientProtocol
)
channelAdded()
(in
ServerFactory
)
channels
(in
Response
)
connectionMade()
(in
MooServerProtocol
)
channelCreated()
(in
MooServerFactory
)
channels
(in
BaseProtocol
)
connectionMade()
(in
BaseProtocol
)
channelDestroyed()
(in
MooServerFactory
)
channelUserChanged()
(in
ClientProtocol
)
connectionMade()
(in
ServerProtocol
)
channelId
(in
LeaveChannel
)
channelUserChanged()
(in
MooClientProtocol
)
connections
(in
Channel
)
channelId
(in
PrivateMessage
)
channelUserExists()
(in
ClientProtocol
)
connections
(in
Channel
)
channelId
(in
ToChannelMessage
)
channelUserExists()
(in
MooClientProtocol
)
connections
(in
MooServerFactory
)
channelId
(in
ChannelJoined
)
channelUserJoined()
(in
ClientProtocol
)
constants
(in
lacewing
)
channelId
(in
FromChannelMessage
)
channelUserJoined()
(in
MooClientProtocol
)
copy()
(in
BitDict
)
channelId
(in
PlayerLeft
)
channelUserLeft()
(in
ClientProtocol
)
createChannel()
(in
MooServerFactory
)
ChannelJoined
(in
lacewing.moo.packetloaders.server
)
channelUserLeft()
(in
MooClientProtocol
)
createChannel()
(in
ServerFactory
)
channelJoined()
(in
ClientProtocol
)
client
(in
lacewing
)
CS_PACKET_TABLE
(in
lacewing.packet
)
channelJoined()
(in
MooClientProtocol
)
client
(in
lacewing.moo
)
csTypes
(in
lacewing.moo.packet
)
channelJoined()
(in
MooServerProtocol
)
client
(in
lacewing.moo.packetloaders
)
channelJoined()
(in
ServerProtocol
)
client
(in
lacewing.packetloaders
)
D
data()
(in
ByteReader
)
datagramReceived()
(in
ServerDatagram
)
detectType()
(in
lacewing.moo.packetloaders.message
)
DATA_TYPES
(in
lacewing.packetloaders.common
)
dataReceived()
(in
MooProtocol
)
detectType()
(in
lacewing.packetloaders.common
)
datagram
(in
ClientProtocol
)
dataReceived()
(in
BaseProtocol
)
DictItem
(in
lacewing.multidict
)
datagram
(in
ServerFactory
)
dataReceived()
(in
ServerProtocol
)
disconnect()
(in
ServerProtocol
)
datagramPort
(in
ServerProtocol
)
destroyChannel()
(in
MooServerFactory
)
datagramReceived()
(in
ClientDatagram
)
destroyChannel()
(in
ServerFactory
)
E
exceptions
(in
lacewing
)
F
factory
(in
Channel
)
flags
(in
Request
)
FromChannelMessage
(in
lacewing.moo.packetloaders.server
)
FLAG_DATA
(in
lacewing.packetloaders.client
)
FLOAT
(in
lacewing.bytereader
)
flags
(in
BitDict
)
FROM_ID
(in
lacewing.packet
)
G
generate()
(in
ChangeName
)
generate()
(in
FromChannelMessage
)
GET_STRING
(in
lacewing.moo.packetloaders.message
)
generate()
(in
ClientMessage
)
generate()
(in
MOTD
)
getFlag()
(in
lacewing.byteflag
)
generate()
(in
JoinChannel
)
generate()
(in
PlayerChanged
)
getFlags()
(in
BitDict
)
generate()
(in
LeaveChannel
)
generate()
(in
PlayerLeft
)
getFlags()
(in
lacewing.byteflag
)
generate()
(in
PrivateMessage
)
generate()
(in
ChannelMaster
)
getHost()
(in
MooServerProtocol
)
generate()
(in
SetName
)
generate()
(in
Request
)
getMaster()
(in
Channel
)
generate()
(in
ToChannelMessage
)
generate()
(in
ChannelPeer
)
getMaster()
(in
Channel
)
generate()
(in
Message
)
generate()
(in
Peer
)
getWelcomeMessage()
(in
ServerFactory
)
generate()
(in
AssignedID
)
generate()
(in
Response
)
globalPing()
(in
ServerFactory
)
generate()
(in
ChannelJoined
)
GET_NUMBER
(in
lacewing.moo.packetloaders.message
)
H
HEADER_DATA
(in
lacewing.packet
)
hidden
(in
ServerChannel
)
HEADER_DATA_UDP
(in
lacewing.packet
)
host
(in
ClientDatagram
)
I
id
(in
ClientChannel
)
id
(in
BinaryServerChannelMessage
)
INT_DATA
(in
lacewing.packetloaders.common
)
id
(in
Peer
)
id
(in
BinaryServerMessage
)
INT_SIZE
(in
lacewing.packet
)
id
(in
Channel
)
id
(in
ChannelPeer
)
ip
(in
Player
)
id
(in
Player
)
id
(in
ObjectChannelMessage
)
isAccepted
(in
MooProtocol
)
id
(in
MooProtocol
)
id
(in
ObjectPeerMessage
)
isAccepted
(in
BaseProtocol
)
id
(in
Channel
)
id
(in
ObjectServerChannelMessage
)
isClient
(in
ClientPacket
)
id
(in
BinaryChannelMessage
)
id
(in
ObjectServerMessage
)
isClient
(in
ServerPacket
)
id
(in
BinaryPeerMessage
)
id
(in
Peer
)
isMaster
(in
ChannelPeer
)
id
(in
BinaryServerMessage
)
id
(in
Ping
)
isMaster
(in
Peer
)
id
(in
ChannelMaster
)
id
(in
Response
)
isMaster
(in
Response
)
id
(in
ObjectChannelMessage
)
id
(in
UDPWelcome
)
isMaster()
(in
Player
)
id
(in
ObjectPeerMessage
)
id
(in
BaseProtocol
)
isPeer()
(in
Player
)
id
(in
ObjectServerMessage
)
id
(in
ServerChannel
)
isServer()
(in
FromChannelMessage
)
id
(in
Pong
)
idpool
(in
lacewing
)
items
(in
MultikeyDict
)
id
(in
Request
)
IDPool
(in
lacewing.idpool
)
items
(in
lacewing.packet
)
id
(in
UDPHello
)
index
(in
lacewing.packet
)
iteritems()
(in
BitDict
)
id
(in
BinaryChannelMessage
)
initialize()
(in
Request
)
itervalues()
(in
MultikeyDict
)
id
(in
BinaryPeerMessage
)
INT
(in
lacewing.bytereader
)
J
JOIN_CHANNEL
(in
lacewing.packetloaders.common
)
joinChannel()
(in
ClientProtocol
)
joinChannel()
(in
ServerProtocol
)
JOIN_CHANNEL_DATA
(in
lacewing.packetloaders.server
)
joinChannel()
(in
MooClientProtocol
)
JoinChannel
(in
lacewing.moo.packetloaders.client
)
joinChannel()
(in
MooServerProtocol
)
K
keys
(in
BitDict
)
keys
(in
DictItem
)
kick()
(in
Peer
)
L
lacewing
leaveChannel()
(in
MooServerProtocol
)
loaderReceived()
(in
MooServerProtocol
)
latency
(in
ServerProtocol
)
leaveChannel()
(in
ServerProtocol
)
loaderReceived()
(in
BaseProtocol
)
LEAVE_CHANNEL
(in
lacewing.packetloaders.common
)
listFlag()
(in
lacewing.byteflag
)
loaderReceived()
(in
ServerProtocol
)
LeaveChannel
(in
lacewing.moo.packetloaders.client
)
loaderReceived()
(in
ClientProtocol
)
loggedIn
(in
BaseProtocol
)
leaveChannel()
(in
ClientProtocol
)
loaderReceived()
(in
MooClientProtocol
)
loginAccepted()
(in
ClientProtocol
)
leaveChannel()
(in
MooClientProtocol
)
loaderReceived()
(in
MooProtocol
)
loginAccepted()
(in
ServerProtocol
)
M
majorVersion
(in
SetName
)
message
(in
ClientMessage
)
moo
(in
lacewing
)
majorVersion
(in
AssignedID
)
message
(in
PrivateMessage
)
MooClientProtocol
(in
lacewing.moo.client
)
master
(in
Peer
)
message
(in
ToChannelMessage
)
MooProtocol
(in
lacewing.moo.protocol
)
master
(in
ServerChannel
)
message
(in
lacewing.moo.packetloaders
)
MooServerFactory
(in
lacewing.moo.server
)
MASTER_KICK
(in
lacewing.packetloaders.client
)
Message
(in
lacewing.moo.packetloaders.message
)
MooServerProtocol
(in
lacewing.moo.server
)
masterActionExecuted()
(in
ServerProtocol
)
message
(in
FromChannelMessage
)
motd
(in
MooClientProtocol
)
masterId
(in
Channel
)
messageReceived()
(in
ClientProtocol
)
MOTD
(in
lacewing.moo.packetloaders.server
)
masterId
(in
ChannelJoined
)
messageReceived()
(in
MooClientProtocol
)
motd
(in
MOTD
)
masterId
(in
PlayerLeft
)
messageReceived()
(in
MooServerProtocol
)
motd
(in
MooServerFactory
)
masterRights
(in
ServerFactory
)
messageReceived()
(in
ServerProtocol
)
motdReceived()
(in
MooClientProtocol
)
maxPing
(in
ServerFactory
)
minorVersion
(in
SetName
)
multidict
(in
lacewing
)
maxUsers
(in
ServerFactory
)
minorVersion
(in
AssignedID
)
MultikeyDict
(in
lacewing.multidict
)
N
name
(in
ClientChannel
)
name
(in
Peer
)
nameChanged()
(in
ServerProtocol
)
name
(in
Peer
)
name
(in
Response
)
nameSet()
(in
MooServerProtocol
)
name
(in
Channel
)
name
(in
BaseProtocol
)
NEW_PEER_DATA
(in
lacewing.packetloaders.server
)
name
(in
Player
)
name
(in
ServerChannel
)
newName
(in
ChangeName
)
name
(in
MooProtocol
)
NAME_DATA
(in
lacewing.packetloaders.server
)
NUMBER
(in
lacewing.moo.packetloaders.message
)
name
(in
Channel
)
nameChanged()
(in
ClientProtocol
)
NUMBER_LOADED
(in
lacewing.moo.packetloaders.message
)
name
(in
Request
)
nameChanged()
(in
MooClientProtocol
)
name
(in
ChannelPeer
)
nameChanged()
(in
MooServerProtocol
)
O
ObjectChannelMessage
(in
lacewing.packetloaders.client
)
ObjectPeerMessage
(in
lacewing.packetloaders.server
)
ObjectServerMessage
(in
lacewing.packetloaders.server
)
ObjectChannelMessage
(in
lacewing.packetloaders.server
)
ObjectServerChannelMessage
(in
lacewing.packetloaders.server
)
ObjectPeerMessage
(in
lacewing.packetloaders.client
)
ObjectServerMessage
(in
lacewing.packetloaders.client
)
P
packet
(in
lacewing.moo
)
ping
(in
ServerFactory
)
PlayerJoined
(in
lacewing.moo.packetloaders.server
)
packet
(in
lacewing
)
ping()
(in
ServerProtocol
)
PlayerLeft
(in
lacewing.moo.packetloaders.server
)
packetloaders
(in
lacewing.moo
)
pingReceived()
(in
ClientProtocol
)
playerName
(in
SetName
)
packetloaders
(in
lacewing
)
pingTime
(in
ServerFactory
)
playerName
(in
ChannelJoined
)
packetTable
(in
ClientPacket
)
player
(in
Channel
)
playerName
(in
PlayerChanged
)
packetTable
(in
ServerPacket
)
Player
(in
lacewing.moo.client
)
Pong
(in
lacewing.packetloaders.client
)
Peer
(in
lacewing.client
)
PlayerChanged
(in
lacewing.moo.packetloaders.server
)
pongReceived()
(in
ServerProtocol
)
peer
(in
ChannelMaster
)
PlayerExists
(in
lacewing.moo.packetloaders.server
)
pop()
(in
IDPool
)
Peer
(in
lacewing.packetloaders.server
)
playerId
(in
PrivateMessage
)
port
(in
ClientDatagram
)
peer
(in
Peer
)
playerId
(in
AssignedID
)
PrivateMessage
(in
lacewing.moo.packetloaders.client
)
PEER_DATA
(in
lacewing.packetloaders.server
)
playerId
(in
ChannelJoined
)
privateMessageReceived()
(in
ClientProtocol
)
PEER_LEAVE_DATA
(in
lacewing.packetloaders.server
)
playerId
(in
FromChannelMessage
)
privateMessageReceived()
(in
MooServerProtocol
)
PEER_MESSAGE_DATA
(in
lacewing.packetloaders.client
)
playerId
(in
PlayerChanged
)
privateMessageReceived()
(in
ServerProtocol
)
PEER_MESSAGE_DATA
(in
lacewing.packetloaders.server
)
playerId
(in
PlayerLeft
)
protocol
(in
lacewing.moo
)
peers
(in
Response
)
playerId
(in
Response
)
protocol
(in
lacewing
)
Ping
(in
lacewing.packetloaders.server
)
playerIp
(in
ChannelJoined
)
putBack()
(in
IDPool
)
R
read()
(in
ByteReader
)
readInt()
(in
ByteReader
)
request
(in
Request
)
read()
(in
ChannelMaster
)
readShort()
(in
ByteReader
)
REQUEST_TYPE
(in
lacewing.packetloaders.client
)
read()
(in
Request
)
readString()
(in
ByteReader
)
requestChannelList()
(in
ClientProtocol
)
read()
(in
ChannelPeer
)
readStruct()
(in
ByteReader
)
Response
(in
lacewing.packetloaders.server
)
read()
(in
Peer
)
removeConnection()
(in
Channel
)
response
(in
Response
)
read()
(in
Response
)
removeConnection()
(in
Channel
)
RESPONSE_DATA
(in
lacewing.packetloaders.server
)
readByte()
(in
ByteReader
)
removeConnection()
(in
ServerChannel
)
revision
(in
BaseProtocol
)
readFloat()
(in
ByteReader
)
Request
(in
lacewing.packetloaders.client
)
S
SC_PACKET_TABLE
(in
lacewing.packet
)
sendMessage()
(in
MooServerProtocol
)
setFlags()
(in
BitDict
)
scTypes
(in
lacewing.moo.packet
)
sendMessage()
(in
ServerChannel
)
setMaster()
(in
Channel
)
seek()
(in
ByteReader
)
sendMessage()
(in
ServerProtocol
)
SetName
(in
lacewing.moo.packetloaders.client
)
sendChannelList()
(in
ServerProtocol
)
sendPrivateMessage()
(in
ServerChannel
)
setName()
(in
ClientProtocol
)
sendChannelMessage()
(in
MooClientProtocol
)
server
(in
lacewing.moo.packetloaders
)
setName()
(in
ServerProtocol
)
sendChannelMessage()
(in
MooServerProtocol
)
server
(in
lacewing.moo
)
setServer()
(in
FromChannelMessage
)
sendLoader()
(in
ClientDatagram
)
server
(in
lacewing.packetloaders
)
SHORT
(in
lacewing.bytereader
)
sendLoader()
(in
ClientProtocol
)
server
(in
lacewing
)
SHORT_SIZE
(in
lacewing.packet
)
sendLoader()
(in
MooProtocol
)
SERVER_CHANNEL_MESSAGE_DATA
(in
lacewing.packetloaders.server
)
size()
(in
ByteReader
)
sendLoader()
(in
Channel
)
ServerChannel
(in
lacewing.server
)
startFactory()
(in
ServerFactory
)
sendLoader()
(in
BaseProtocol
)
ServerDatagram
(in
lacewing.server
)
startProtocol()
(in
ClientDatagram
)
sendLoader()
(in
ServerChannel
)
serverDenied()
(in
ClientProtocol
)
STRING
(in
lacewing.moo.packetloaders.message
)
sendLoader()
(in
ServerDatagram
)
ServerFactory
(in
lacewing.server
)
STRING_LOADED
(in
lacewing.moo.packetloaders.message
)
sendLoader()
(in
ServerProtocol
)
serverGreeted()
(in
ClientProtocol
)
subchannel
(in
ClientMessage
)
sendMessage()
(in
ClientChannel
)
ServerPacket
(in
lacewing.moo.packet
)
subchannel
(in
PrivateMessage
)
sendMessage()
(in
ClientProtocol
)
ServerPacket
(in
lacewing.packet
)
subchannel
(in
ToChannelMessage
)
sendMessage()
(in
Peer
)
ServerProtocol
(in
lacewing.server
)
subchannel
(in
FromChannelMessage
)
sendMessage()
(in
Channel
)
SET_NAME
(in
lacewing.packetloaders.common
)
SUBCHANNEL_DATA
(in
lacewing.packetloaders.client
)
sendMessage()
(in
MooClientProtocol
)
SET_NUMBER
(in
lacewing.moo.packetloaders.message
)
SUBCHANNEL_DATA
(in
lacewing.packetloaders.server
)
sendMessage()
(in
Player
)
SET_STRING
(in
lacewing.moo.packetloaders.message
)
success
(in
Response
)
sendMessage()
(in
Channel
)
setFlag()
(in
lacewing.byteflag
)
T
timeOut
(in
ServerFactory
)
ToChannelMessage
(in
lacewing.moo.packetloaders.client
)
type
(in
Message
)
U
UBYTE
(in
lacewing.bytereader
)
UDPWelcome
(in
lacewing.packetloaders.server
)
user
(in
Peer
)
udpEnabled
(in
BaseProtocol
)
UINT
(in
lacewing.bytereader
)
userPool
(in
MooServerFactory
)
UDPHello
(in
lacewing.packetloaders.client
)
unpack_string()
(in
lacewing.moo.packetloaders.common
)
USHORT
(in
lacewing.bytereader
)
udpTimeout
(in
ClientProtocol
)
user
(in
ClientChannel
)
V
validName()
(in
BaseProtocol
)
value
(in
DictItem
)
values()
(in
MultikeyDict
)
value
(in
Message
)
value
(in
Response
)
version
(in
Request
)
W
warn()
(in
ServerProtocol
)
writeByte()
(in
ByteReader
)
writeShort()
(in
ByteReader
)
welcome
(in
Response
)
writeFloat()
(in
ByteReader
)
writeString()
(in
ByteReader
)
welcomeMessage
(in
ServerFactory
)
writeInt()
(in
ByteReader
)
writeStruct()
(in
ByteReader
)
Y
YOUR_ID
(in
lacewing.packetloaders.server
)
_
__credits__
(in
lacewing
)
__package__
(in
lacewing.bitdict
)
__repr__()
(in
BitDict
)
__delitem__()
(in
MultikeyDict
)
__package__
(in
lacewing.byteflag
)
__repr__()
(in
ByteReader
)
__email__
(in
lacewing
)
__package__
(in
lacewing.bytereader
)
__repr__()
(in
DictItem
)
__getitem__()
(in
BitDict
)
__package__
(in
lacewing.client
)
__setitem__()
(in
BitDict
)
__getitem__()
(in
MultikeyDict
)
__package__
(in
lacewing.constants
)
__setitem__()
(in
MultikeyDict
)
__init__()
(in
BitDict
)
__package__
(in
lacewing.exceptions
)
__str__()
(in
BitDict
)
__init__()
(in
ByteReader
)
__package__
(in
lacewing.idpool
)
__str__()
(in
ByteReader
)
__init__()
(in
ClientChannel
)
__package__
(in
lacewing.moo
)
__str__()
(in
DictItem
)
__init__()
(in
ClientDatagram
)
__package__
(in
lacewing.moo.client
)
_channelList
(in
ClientProtocol
)
__init__()
(in
Peer
)
__package__
(in
lacewing.moo.packet
)
_channelListDefer
(in
ClientProtocol
)
__init__()
(in
IDPool
)
__package__
(in
lacewing.moo.packetloaders
)
_currentPing
(in
ServerProtocol
)
__init__()
(in
Channel
)
__package__
(in
lacewing.moo.packetloaders.client
)
_firstByte
(in
ServerProtocol
)
__init__()
(in
MooClientProtocol
)
__package__
(in
lacewing.moo.packetloaders.common
)
_freeIds
(in
IDPool
)
__init__()
(in
Player
)
__package__
(in
lacewing.moo.packetloaders.message
)
_loaderDict
(in
ClientPacket
)
__init__()
(in
MooProtocol
)
__package__
(in
lacewing.moo.packetloaders.server
)
_loaderDict
(in
ServerPacket
)
__init__()
(in
Channel
)
__package__
(in
lacewing.moo.protocol
)
_loginName
(in
ClientProtocol
)
__init__()
(in
MooServerFactory
)
__package__
(in
lacewing.moo.server
)
_newIds
(in
IDPool
)
__init__()
(in
DictItem
)
__package__
(in
lacewing.multidict
)
_packetBuffer
(in
MooProtocol
)
__init__()
(in
MultikeyDict
)
__package__
(in
lacewing.packet
)
_packetBuffer
(in
BaseProtocol
)
__init__()
(in
ServerChannel
)
__package__
(in
lacewing.packetloaders
)
_pinger
(in
ServerFactory
)
__init__()
(in
ServerDatagram
)
__package__
(in
lacewing.packetloaders.client
)
_pingTime
(in
ServerProtocol
)
__len__()
(in
ByteReader
)
__package__
(in
lacewing.packetloaders.common
)
_timeoutCall
(in
ServerProtocol
)
__len__()
(in
MultikeyDict
)
__package__
(in
lacewing.packetloaders.server
)
_udpCheck
(in
ClientProtocol
)
__package__
(in
lacewing
)
__package__
(in
lacewing.protocol
)
__package__
(in
lacewing.baseloader
)
__package__
(in
lacewing.server
)
Home
Trees
Indices
Help
Python Lacewing Library
Generated by Epydoc 3.0.1 on Thu Dec 22 06:19:59 2011
http://epydoc.sourceforge.net


I am currently pursuing a Master of Electrical Engineering at the University of Melbourne. Driven by curiosity, I design and build projects to enhance my skills as a software developer and electronics engineer.
From past and projects internships, I have developed web applications, electronics, Internet of Things devices, mobile apps and games. Outside of coding, I enjoy Ultimate Frisbee, jazz, and a good cup of coffee.
July 2018 - December 2020
Major - Electrical Engineering
Specialization - Communications and Electronic Systems
June 2015 - July 2018
Major - Bioengineering Systems
Minor Tracks: Electrical Systems, Computer Systems
Worked casually as a part time staff in both kitchen and front of house departments.
• Dealing with customer issues or complaints.
• Communicating and collaborating with other kitchen staff during service.
• Expediting dishes before being served.
• Performed
kitchen tasks such as frying and assembling.


Shraey here - an upcoming Data Scientist with an interest in Deep Learning and Machine Learning. I recently graduated with my Masters degree from the University of Melbourne. Data fascinates me and I truly believe this is the century where data and predective modelling will take us to the next level. Have any interesting Projects or Research ideas, well then let us get in touch.
In this project I employed neural network inspired Doc2Vec and Word2Vec models in conjunction with topic models to give a labelling approach for topics. Hence given a bunch of topic words it will generate a succint phrase or label for those words representing the idea. Thhis project was part of my work at IBM Research and you can also find the reseach paper in the publications section.
This Project notebook employed supervised learning where NGOs reached out only to people earning more than $50,000 hence not wasting resources on others. Then try to predict individual’s income using attributes like education level, capital gain, occupation, age, working-class etc. FInally apply Ada Boosting and ensemble methods to achieve an accuracy of 86%.
In this project, we will analyze a dataset containing data on various customers' annual spending amounts (reported in monetary units) of diverse product categories for internal structure. One goal of this project is to best describe the variation in the different types of customers that a wholesale distributor interacts with. Doing so would equip the distributor with insight into how to best structure their delivery service to meet the needs of each customer.
Predict the presence of links between Twitter users, given data in the form of a directed social network graph. The graph of network was transposed into a binary classification problem. Supervised learning techniques were applied along with different Ensemble approaches. Finally, Gradient Boosted Trees with feature transformation achieved an accuracy of 85%.
In this project we break Video into image frames, train Cov-nets using inception3 architecture on time distributed layer and combine them with LSTM layer. We use pre-trained word2vec vectors on word queries and combine them with using LSTM layer. Finally, Concatenate output of both LSTMs, add a couple fully connected layer and an output layer to softmax and give predictive words for the Video.
In this project, I will evaluate the performance and predictive power of a model that has been trained and tested on data collected from homes in suburbs of Boston, Massachusetts. A model trained on this data that is seen as a good fit could then be used to make certain predictions about a home — in particular, its monetary value. This model would prove to be invaluable for someone like a real estate agent who could make use of such information on a daily basis.
In this project I use LSTM recurrent neural network for text generation in Python with Tensorflow and Keras. I train stacked LSTM network on text sequences an then use this trained sequences as a generative model to generate new text sequences.
I graduated from my Masters' degree with First Class Honours - Distinction (H1).
July 2017Conduct laboratory sessions for students assisting them with Data science and Machine Learning algorithms.
Feburary 2017 - June 2017Worked with Neural network inspired models Word2Vec and Doc2Vec on topic models. Used different ML algorithms and neural networks to construct automatic labeling of topics.
March 2016 - November 2016Commenced my Masters' degree in Computer Science with emphasis on Data Science and Machine learning.
July 2015© 2017 Home


Good Day, Please accept my sincere apologizes if my email does not meet your business or personal ethics. I will first introduce myself as Mr. Bruno Lambert, a staff in the Private Clients Section of a well-known bank, here in Mabella, Spain. One of our accounts, with holding balance of $15,000,000 (Fifteen Million United States Dollars) has been dormant and last operated three years ago. From my investigations and confirmation, the owner of the said account, a foreigner by name John Shumejda died on the 4th of January 2002 in a plane crash in Birmingham; you can view this CNN website <http://edition.cnn.com/2002/WORLD/europe/01/04/england.plane/> for details on the crash. Since then, nobody has done anything as regards the claiming of this money, as he has no family member that has any knowledge as to the existence of either the account or the funds. I have confidently discussed this issue with some of the bank officials and we have agreed to find a reliable foreign partner to deal with. We therefore propose to do business with you, standing in as the next of kin of these funds from the deceased and funds released to you after necessary processes have been followed. This transaction is totally free of risk and troubles as the fund is legitimate and does not originate from drug, money laundry, terrorism or any other illegal act. On your interest, let me hear from you URGENTLY contact me via this mail<EMAIL_ADDRESS>Warm Regards, Mr. Bruno Lambert bruno100lambert@aim.com


Pitchfork taxidermy meggings single-origin coffee.
Raw denim humblebrag vegan four loko, cillum tacos food truck neutra squid laborum coloring book fanny pack tattooed cray. Tumblr gentrify DIY, edison bulb mumblecore lo-fi narwhal tote bag echo park artisan shaman snackwave leggings umami.
Offal chambray reprehenderit ethical franzen eu deserunt adaptogen synth meggings yr. Master cleanse etsy meggings pinterest celiac.


Welcome to Gordon's Crown
Gordons's fabulous Crown in the middle of London is a brilliant British country pub and restaurant. The Crown is a simple and down to earth pub restaurant serving the very best in British grub, albeit with the culinary magic of super Chef Gordon. The pub is a beautiful Tudor building complete with charming low ceilings, wooden beams and wood panelling and the real log fires offer a cosy glow in colder times. Gordon has worked closely with food historians from the Tudor kitchens at Hampton Court Palace to create a menu celebrating the delights of the British culinary past. The menu changes according to the seasons and market availability. Desserts are homely and simply divine. The atmosphere at the Crown is completely unpretentious and wonderfully relaxed, typical of a great British country pub.
We provide our menu on this website for you to check out. You can see and post ratings about the dishes here.
We would be pleased to see you soon.


US Imposes Sanctions on Cuban Interior Minister in Connection With Venezuela - Pompeo
Washinton has repeatedly put pressure on Havana for what it sees as ''repression of the Cuban people'', as well as its support for ''the corrupt former Maduro regime in Venezuela''.
The United States has imposed sanctions on Cuban Interior Minister Julio Cesar Gandarilla Bermejo for being allegedly responsible for human rights violations in Venezuela, US Secretary of State Mike Pompeo announced on Saturday.
Gandarilla's two children were also included in the sanctions list.
"The law also requires the Secretary of State to publicly or privately designate such officials and their immediate family members. In addition to the public designation of Julio Cesar Gandarilla Bermejo, the Department is also publicly designating his children, Julio Cesar Gandarilla Sarmiento and Alejandro Gandarilla Sarmiento", the official statement said.
Earlier on Friday, the US expanded sanctions to five hotels owned by the Cuban military as part of the ongoing economic blockade against the country.


Indonesia’s tourism minister plans to make Bali more Muslim-friendly
by Coconuts BaliUPDATE: Indonesia’s Tourism and Creative Economy Minister Wishnutama Kusubandio said that news of him suggesting to make Bali more Muslim-friendly was a misreporting. Read our update on this here.
Indonesia’s new Tourism and Creative Economy Minister looks set on developing the country’s halal tourism, explaining this week that top destinations such as Bali will undergo changes to accommodate more Muslim tourists.
“Many parts of Indonesia are not Muslim [majority]. Such as [Lake] Toba and Bali. There we will provide places of worship and wudhu (ablution) so that they will be comfortable,” Wishnutama Kusubandio said on Tuesday, as quoted by Sindo News.
Bali is a Hindu-majority province, where Hindus make up more than 80 percent of the population, according to 2010 census data from the Central Statistics Agency (BPS). Meanwhile, Lake Toba, a popular tourist destination located in Toba Samosir district of North Sumatra, is a Christian-majority region.
It isn’t very clear just yet what entails the government’s plan on transforming Bali into a more Muslim-friendly destination, but Wishnutama’s comment this week is already eliciting diverse reaction on social media.
One prominent comment came from Bali punk rock icon Ari Astana, who is more commonly known as Jerinx of the band Superman is Dead and for his controversial and outspoken activism.
On Instagram, the musician indicated his support for the idea of making Bali more friendly towards Muslim tourists, citing his disgust over the bad behavior of many foreign tourists on the island recently.
“Resistance must begin now before Bali turns into a toilet for foreign tourists,” Jerinx wrote on Instagram.
One user also pointed out that Bali has always been a friendly destination, while another said that the hospitality should extend to people of other faiths as well.
“[As if] Bali’s not friendly enough,” a user commented.
“It should be made friendly for Hindus, Buddhists, Confucianists, Catholics, Christian [Protestants], Javanism, etc… Why should it be divided? Such a tendency for exclusivity,” another said.
Read also: Bali Police to step up patrol in Seminyak after videos of foreigners fighting went viral


I have 3 years of experience as a Software Engineer and I have contributed to several projects as a Professional Android Developer.
Comfortable in working with Java, Android, Kotlin, Python, Linux environments.
I am a team player and believe in exploring by pushing myself out of my comfort zone
so as to solve complex problems.
Passionate for coding and linguistics. Always keen in developing solutions
and helping people which requires best of my technical and professional skills.
Interested in gaining knowledge related to Data Science, High Performace Computing and Software Engineering.
Studying Computer Science
Studied Computer Engineering


Reflections
JavaScript and Ruby each have their ways of iterating through loops. Ruby has a couple methods of looping.
num_array = [1,2,3,4,5] for number in num_array puts number if number > 1 end => 2 3 4 5 num_array.each do |num| puts num if num > 1 end => 2 3 4 5
Here, the first method used to iterate through the elements in the array is with the "for number in num_array." I define number as each element and it does some code for each element in the array until the end of the array. It puts number if the number is greater than 1. The second method used here is using the .each method. It executes the block of code after the "each" for each element in the array. This produces the same result. The .each method is definitely more widely used in Ruby for looping.
JavaScript is done a little bit differently.
var num_array = [1,2,3,4,5] for (var i=0; i < num_array.length; i++){ if (num_array[i] > 1){ console.log(num_array[i]) } } => 2 3 4 5
Here in JavaScript, I used the for construct. JavaScript also require var before defining the variable. The for syntax is "for (var i = 0; condition; increment){block of code to execute during each loop.} I made i=0 and incremented "i" by 1 after each loop and it would keep on looping only "i" was less than the number of elements in the array where "i" is the index. The block that was run on each iteration was to print out to the console the element if the element was greater than 1.
Ruby seems to have a couple more methods built in for looping running blocks within arrays with access to index and the elements. The above-mentioned methods are the most basic way to iterate though the array with JavaScript and Ruby. Ruby simplifies the syntax while JavaScript requires more brackets and semicolons.


Deshmukh has not come alone to meet me at Amalner, a town near the central Maharashtra city of Jalgaon. After hearing that someone from Bengaluru had come to meet people who know Premji, he has brought his son and grandson along, too. Deshmukh used to work as a machine operator in Wipro’s Amalner factory, and did so for over four decades. He used to fill vegetable oil in packets that would get shipped to wholesalers across the country. The memories are so well entrenched in his ageing mind that he snaps back the exact date of joining and retiring in a flash.
Deshmukh has not come alone to meet me at Amalner, a town near the central Maharashtra city of Jalgaon. After hearing that someone from Bengaluru had come to meet people who know Premji, he has brought his son and grandson along, too. Deshmukh used to work as a machine operator in Wipro’s Amalner factory, and did so for over four decades. He used to fill vegetable oil in packets that would get shipped to wholesalers across the country. The memories are so well entrenched in his ageing mind that he snaps back the exact date of joining and retiring in a flash.
Deshmukh has not come alone to meet me at Amalner, a town near the central Maharashtra city of Jalgaon. After hearing that someone from Bengaluru had come to meet people who know Premji, he has brought his son and grandson along, too. Deshmukh used to work as a machine operator in Wipro’s Amalner factory, and did so for over four decades. He used to fill vegetable oil in packets that would get shipped to wholesalers across the country. The memories are so well entrenched in his ageing mind that he snaps back the exact date of joining and retiring in a flash.
MSK Creations was established on some date. i dont know. The Mountain View company also released the new Android M developer preview, just like how Android Lollipop was released as Android L at last year's I/O conference. Similarly, the official name of the new OS version will only be revealed at the time of the next Nexus device launch, expected in October. Google also stressed that for Android M, the company has focused on improving the core experience of Android and has made some changes to the fundamentals of the platform apart from fixing several bugs. During the Google I/O keynote, the company also revealed that this time it will provide a clear timeline for Android M Developer Preview for testing and feedback to the preview build. Here are biggest changes to Android that Google has introduced with Android M. One of the biggest additions that Android M brings to the Android platform is the revamped app permissions. The company, as rumoured previously, announced increased user control of app permissions in the M release. Android M also changes existing permissions system by breaking down user permissions into specific categories, and having apps ask the user for permission at the time access to a feature is required.


Linux/Mac
Mac system dependencies
Holonix assumes Xcode is installed.
Xcode is the official Mac developer toolkit so is likely to already be installed on a development machine.
Install it from the Apple app store if needed.
You may need to install the command line tools.
Follow the instructions if prompted.
Linux system dependencies
Only curl
and sudo
are needed to install nix-shell
.
These are basic commands.
Likely to already be installed on a development machine.
Install with the default package manger on your system if needed.
apt-get install -y sudo curl
Install Nix Tooling
Nix installation is the same on Linux and Mac:
sh <(curl -L https://nixos.org/nix/install)
Once installation is finished it will tell you to source the new configuration. Run the command the installer tells you to run.
Once everything is installed and configured the nix-shell
should work. Test it out by pulling up the help docs.
nix-shell --help
This is everything needed to work with Holonix on Mac and Linux!
Windows
System dependencies
Windows does not have native support for nix-shell
.
There are a few different options each with its own dependencies and pros/cons.
Holonix is tested against Windows 8+ with Powershell 2.0+.
Setting up virtualisation may be possible on older systems but is significantly more complex. It seems that at least some changes to the BIOS or additional downloads are needed.
Virtualisation
Vagrant
Working with Vagrant requires a few things to be installed first.
- Vagrant
- VirtualBox (click “Windows hosts”)
Once vagrant
is installed there is an additional NixOS plugin to install.
vagrant plugin install vagrant-nixos-plugin
Vagrant works by reading the Vagrantfile
out of the current project, the current user’s home directory or in the root.
A minimal Vagrantfile
with decent swap RAM configured looks like this (see the vagrant docs for more info):
Importantly the https://holochain.love/box
is a NixOS
VM with a prewarmed holonix nix-shell and :nixos
allows vagrant to use nix for provisioning.
This uses a combination of vanilla Vagrantfile
configuration and additional NixOS configuration from vagrant-nixos-plugin
.
You can use it directly to boot a vagrant machine and login with ssh.
cd path/to/your/project
# this URL is a shortened link to the raw gist above
wget https://bit.ly/2KE6cw4 -outfile Vagrantfile
# this will take a while, it is a large download
vagrant up
# login to the vagrant box when it is up
vagrant ssh
# this is inside the vagrant box
cd /vagrant
# see your project files inside vagrant
ls
# see that nix-shell is installed, ready for holonix
nix-shell --help
# make a change, it will be synced outside the box
# /vagrant has a 2-way mount between host and box
touch foo.txt
Docker
Docker is available for Windows but has specific requirements that likely cost money.
Docker can be a great option for development if you are familiar with how to use it. Docker is relatively low level and many behaviours like snapshots, volumes, detaching and pruning disk usage are unintuitive and inconvenient for casual usage.
The “official” docker box for holonix is on docker hub. It is built on top of the NixOS community maintained Alpine Linux docker optimised for Circle CI testing with nixpkgs warmed and pinned for Holonix. This box should work equally well for local usage as for CI.
Docker desktop
Docker desktop installation instructions and requirements are listed on the docker website.
It is the recommended option if possible.
Important notes:
- Requires Windows 10+ 64bit: Pro, Enterprise or Education (Build 15063+)
- Virtualisation must be enabled in BIOS (default setting)
- Hyper-V will be enabled which will break Virtualbox
- 4GB of RAM is needed
Docker toolbox
Docker toolbox is offered as a fallback as it has less onerous requirements than docker desktop.
Docker toolbox is an older solution that wraps virtual machines to fake native support.
Installation instructions for docker toolbox are listed on the docker website.
Important notes:
- Requires Windows 7+ 64bit
- Virtualisation must be enabled in BIOS (default in Windows 8+)
- Uses VirtualBox under the hood (like vagrant)
- Hyper-V must be disabled
Windows Subsystem Linux
Windows natively supports Linux emulation for development and general usage. This is called “Windows Subsystem Linux” (WSL).
WSL comes in two major versions:
- WSL1 is currently in wide circulation but is slower and not a real Linux kernel
- WSL2 is newer, faster and a real Linux kernel but requires virtualisation, so newer Windows machines only
The “not a real Linux kernel” limitation of WSL1 is known to cause some problems for NixOS in general. The workarounds outlined below should work fine for Holonix.
Installing WSL requires administrator access to powershell. The instructions are listed on the Microsoft documentation site.
WSL1
WSL1 can work with some additional configuration.
This may be a good option if your machine cannot do 64bit virtualisation.
The /etc/nix/nix.conf
file must be configured with:
sandbox = false
use-sqlite-wal = false
WSL2
WSL2 may natively support NixOS in the Windows app store.
If/when this eventuates it will likely be the best way to use NixOS on modern Windows machines.
At the time of writing, WSL2 is DIY and/or Coming Soon.
Dual Boot
Linux dual boot
A linux dual boot can be used with nix shell directly.
Ubuntu + nix shell is a good option, especially for people new to holonix.
NixOS dual boot
The NixOS wiki lists instructions to dual boot NixOS and Windows.
This seems to be technical but possible judging from various threads and articles:
-<EMAIL_ADDRESS>- https://www.reddit.com/r/NixOS/comments/a3lp8r/newbie_guidenotes_for_dual_booting_nixos_and/
- https://www.reddit.com/r/NixOS/comments/31lx3i/windows_and_nixos_dual_boot/
- https://unix.stackexchange.com/questions/435122/dual-booting-nixos-and-windows-10-can-it-be-done-easily-if-nixos-is-installed-f
If you can stomach the technicalities of running a full NixOS installation alongside a Windows install, go for it. Note that NixOS by itself is a fairly steep learning curve so this is an extra++ option.


Buildable feeds¶
You can build a RSS feed in much the same manner as buildable class-based views.
BuildableFeed¶
-
class
BuildableFeed
(Feed, BuildableMixin)¶ Extends the base Django Feed class to be buildable. Configure it in the same way you configure that plus our bakery options listed below.
-
build_path
¶ The target location of the flat file in the
BUILD_DIR
. Optional. The default islatest.xml
, would place the flat file at the site’s root. Defining it asfoo/latest.xml
would place the flat file inside a subdirectory.
-
build_method
¶ An alias to the
build_queryset
method used by the management commands
-
build_queryset
()¶ Writes the rendered template’s HTML to a flat file. Only override this if you know what you’re doing.
Example myapp/feeds.py
from myapp.models import MyModel from bakery.feeds import BuildableFeed class ExampleRSSFeed(BuildableFeed): link = 'http://www.mysite.com/rss.xml' build_path = 'rss.xml' def items(self): return MyModel.objects.filter(is_published=True)
-


--- layout: tweet ---
Ah, Ruby 1.8.6, how I've been missing you. #sigh
5/3/2013, 10:24:05 AM
Favs: 0
Retweets: 0


Bike odometer ticked over to 2000 miles this morning since I got the Cannondale. Woo!
8/14/2012, 10:02:32 AM
Favs: 0
Retweets: 0
link--- layout: tweet ---
Bike odometer ticked over to 2000 miles this morning since I got the Cannondale. Woo!
8/14/2012, 10:02:32 AM
Favs: 0
Retweets: 0
link


Two other useful functions are any
and all
. The any
function takes a vector of logicals and returns TRUE
if any of the entries is TRUE
. The all
function takes a vector of logicals and returns TRUE
if all of the entries are TRUE
. Here is an example:
z <- c(TRUE, TRUE, FALSE)
any(z)
#> [1] TRUE
all(z)
#> [1] FALSE
vec <- c(1:5, NA, 6:11, NA, 21, NA, 3:5)
vec_noNA <- ifelse(is.na(vec), 0, vec)
vec <- vec_noNA
rm(vec_noNA)
# Check the pre-defined variable 'vec'.
head(vec)
# Check whether there is a value larger than 10.
any(vec > __)
# Check whether all values are larger than 10.
all(vec > __)
# Create a code to check whether there exists a value larger than 10.
if(________){
print("There exists a value larger than 10")
}
# Check the pre-defined variable 'vec'.
head(vec)
# Check whether there is a value larger than 10.
any(vec > 10)
# Check whether all values are larger than 10.
all(vec > 10)
# Create a code to check whether there exists a value larger than 10.
if(any(vec > 10)){
print("There exists a value larger than 10")
}
msg <- "Please see that objects are well-defined and correct."
test_function(any)
test_function(all)
success_msg("Great! Head over to the next exercise.")


--- layout: post title: Attracting more developers to F# date: 2019-04-05 08:00:00 keywords: fsharp teaser: The least effective way to promote F# adoption is the one that comes most naturally. ---
UPDATE: If you are reading this piece, please also read the follow up post I published a few days later.
Sometimes folks complain about Microsoft's posture toward F#.
You've probably seen these kinds of remarks on Twitter and GitHub and so on. People compare the amount of attention and resources that Microsoft gives to F# compared to C#. Terms like "second class citizen" and "red-headed stepchild" get used.
In some cases these comments are accompanied by strong emotions, expressed either directly or with sarcasm.
Let's acknowledge that Microsoft DOES give more attention to C#, and for good reasons. The following picture appeared in one of the slides during a presentation at Build in 2017:
C# users outnumber F# users by two orders of magnitude. That's huge. Giving a lot of attention to C# just makes sense. It's all about the users.
So the real question is...
This post is a follow-up to another blog entry I wrote back in 2015. The nutshell summary of that piece is that F# is a "discontinuous innovation", so Geoffrey Moore's chasm principle applies, which means that F# will never take over the .NET world, because C# is simply too good.
So, four years later, where are we? It looks to me like F# is continuing to grow, and a lot of good F# things are happening. But in the big picture, some things are basically unchanged: C# is still FAR more widely used. F# is still considered esoteric.
Here's an example of how this plays out: In the recent election for the .NET Foundation board, AFAICT, none of the winning candidates identify as an F# developer, and only one of them even mentioned F# in their candidate statement. Please understand that I'm not saying this as a complaint. This is merely an interesting barometer reading of where we are. In other words, with respect to F#, the election result is an accurate reflection of the .NET ecosystem, because there are only six board slots, and F# is used by far fewer than one-sixth of .NET developers.
So, if we want more people to use F#, what do we do? Is the situation hopeless? I think not. But with all due respect, complaining about Microsoft's resource allocation won't help.
My claim is that we (F# fans) need to examine how we are contributing to the problem.
First let's talk about the different ways that we can view F# and its place in the world. As is my tendency, I will speak of this as an east/west continuum with two endpoints.
F# is:
| An ML dialect that happens to run on the CLR | ---------------------------------------- | A .NET language that happens to be an ML dialect |
The "west" endpoint (to the left) is about perceiving F# as primarily a functional programming language. The fact that F# runs on .NET is merely an implementation detail. When we develop with F#, we are usually not thinking about .NET.
To the "east", at the other end of the spectrum, we speak of F# as primarily a .NET language. The fact that F# runs on .NET is important. When we develop with F#, we are often thinking about broader aspects of .NET.
Let me first say that both of these perspectives (and all the shades of gray in between) are valid. I'm not here to tell you how you must view F#.
However...
If your perspective of F# is near the west end of my continuum, I assume that you are NOT one of the people who is upset about Microsoft's level of attention for F#. And if you are, I further assume you believe that shouting at the rain will make it stop.
Seriously. This isn't gonna happen. Microsoft is not going to try to convert the world to the functional programming paradigm.
To be clear, I should explicitly say here that I don't work for Microsoft and do not speak for them. My remarks here should be seen for what they are, opinions and predictions from an outsider.
Still, this should be obvious. Microsoft is all about .NET.
Back to the point...
In late 2017, issue #3976 was logged in the GitHub repo where the F# compiler is developed.
Nutshell summary: The F# compiler has its own backend (which, like the rest of the F# compiler, is written in F#). Somebody suggested replacing that backend with System.Reflection.Metadata, which is what the Roslyn compiler uses. Don Syme said no. The issue was closed.
Let's think for a moment what it might mean for the F# compiler to share a backend with Roslyn. It seems likely that such a move could greatly affect the way people inside Microsoft think about F#. Maybe folks in DevDiv think of F# as "separate", and moving its compiler onto Roslyn's backend would help change that. Maybe the increased interdependence between F# and the rest of .NET would make it more fully recognized as an important part of the .NET story.
In short, I believe a shared infrastructure for the F# and C# compilers would move us at least somewhat eastward.
So am I saying that Don Syme made the wrong choice? Certainly not.
But I do wonder how often that same decision pattern gets applied in other contexts.
Simply put, the compiler is a special case. It is essentially always a good idea to have the primary compiler for a programming language be written in that language.
But what happens if we take this sort of "F# only" mentality and apply it to all kinds of other libraries and projects? Broadly speaking, that philosophy adds westward pressure.
And like I said, there's nothing inherently wrong with the west side of my continuum. Functional programming is cool.
But if we want to promote more adoption of F#, the solution lies to the east.
So all that stuff I wrote about F# and the chasm? It wouldn't be quite as applicable if it were possible to adopt F# more incrementally.
Technologies that can be adopted gradually don't really have chasm problems. The chasm exists for "discontinuous innovations", where the change causes a lot of pain. I'm talking about situations where you can't really adopt The New Thing unless you give up the way you do things now. That's what creates the chasm.
And that's why most people don't use F#. It's just too big of a change to swallow.
Things might be different if F# had features which are conceptually familiar to C# developers. Like, you know, if F# had support for classes and mutable variables and loops and object oriented programming -- that would be cool.
Things might be different if F# could interoperate with the rest of the .NET world. Like, you know, if it were possible to have an app which is written partly in C# and partly in F# -- that would make things so much easier.
Okay, I'll stop the silliness. Yes, I know that F# already has these things. I'm trying to make my point by pretending otherwise.
Seriously. Imagine trying to put together a credible story for how to make a gradual, incremental, pain-free transition from C# to Haskell.
No, really. Try to imagine that. I'll wait.
In contrast, the corresponding story for F# basically writes itself. If you want to get started with F#, you can have some working F# code in your repo by the end of the day. Your solution might have 50,000 lines of C# code, and none of that has to change when you add 50 lines of F#.
Because we created it.
Or at the very least, we make the chasm wider.
F# has all kinds of stuff to support a great story about very incremental adoption, but that is not typically what we emphasize when we're talking to someone. Instead, we seem to think the way to get people to switch to F# is to explain how it's "better". Here's why that doesn't work.
When we say this:
The F# type system IS just so much BETTER, with discriminated unions AND records, the functional paradigm is really POWERFUL.
What people hear is this:
___ F# ____ ______ IS ____ __ ____ DIFFERENT, ____ _____________ ______ AND _______, ___ __________ ________ __ ______ SCARY.
Every time you say "better", people hear "different". That's just the way it is.
Talking about how F# is better than C# is usually self-defeating. Because if F# is really that much better, then it must be really different, which probably means the change is going to be painful or expensive.
 It's wide.
But promoting F# can be much more effective than that, if we emphasize incremental change. In fact, even the word "change" isn't quite right, as the choice to use F# can be purely additive.
One thing we need to do is celebrate all parts of F#, not just the parts that are associated with the functional paradigm.
Sometimes we talk about F# kinda like this:
Yeah, F# is a multi-paradigm language, but it's really supposed to be used for functional programming. Real F# is about is functional purity. There are various escape hatches available, such as classes and mutable, but we should feel shame when we use them.
This kind of messaging is NOT the way to help F# people understand that F# can be adopted gradually.
It's also not necessary. Yes, there are some great benefits to be had in functional programming, but trying to start people at the west endpoint is what creates the chasm and drives people away. The goal of promoting F# adoption should be to get people who are OFF the continuum to relocate and be ON the continuum, and the easiest point of entry is the east endpoint, using familiar things like classes and objects and mutable collections.
And by the way, there's no need to worry that they might stay there and never experience functional programming in its full glory.
First of all, even if they did stay east, would that really be a problem? F# is a pretty great language for OOP. If they like using it that way, why not let them be happy?
Second, they won't stay there. Once someone gets on the continuum, it's hard to stay at the east endpoint with the wind constantly blowing to the west. Most people will find a comfortable spot somewhere in the middle.
THIS is what makes F# a great language.
The F# repo on GitHub contains, among other things, the source code for the compiler I mentioned above. Running git log shows over 6,800 commits, around 20% of which were done by Don Syme himself.
So what kind of F# code does our BDFL write?
A quick grep shows that mutable is used 246 times, and that's just in the backend. Casual browsing through the code shows plenty of classes. I even found places where they use regular mutable collections from System.Collections.Generic.
And we should not be surprised. If Dr. Syme didn't want these kinds of features to be used, why would he make them part of the language?
The least effective way to promote F# adoption is the one that comes most naturally, a narrative that includes criticism of C# as part of our claim that F# is better.
Instead, we need an entirely different and more positive narrative: ".NET development with C# is great, and adding F# can make it even better."


Marketplace
Verticals
Verticals Library
Total Verticals:
Create Your Own Vertical & Publish
By Category:
By Status:
Published
Not Published
Delete Vertical
×
Are you sure want to delete
vertical
?
Add to Domain
×
Are you sure want to add this
vertical to your domain
?


  These slides are viewed best by Chrome and occasionally need to be refreshed if elements did not load properly. See here for PDF .

 .white[Press the **right arrow** to progress to the next slide!] --- background-image: url(images/bg1.jpg) background-size: cover class: hide-slide-number split-70 title-slide count: false .column.shade_black[.content[
 # .monash-blue.outline-text[ETC5510: Introduction to Data Analysis]
Week 3, part A

Data Visualisation
 .bottom_abs.width100[ Lecturer: *Nicholas Tierney & Stuart Lee* Department of Econometrics and Business Statistics

<EMAIL_ADDRESS>23rd March 2020
 ] ]]

 <svg class="clip-svg absolute"> <defs> <clipPath id="swipe__clip-path" clipPathUnits="objectBoundingBox"> <polygon points="0.5745 0, 0.5 0.33, 0.42 0, 0 0, 0 1, 0.27 1, 0.27 0.59, 0.37 1, 0.634 1, 0.736 0.59, 0.736 1, 1 1, 1 0, 0.5745 0" /> </clipPath> </defs> </svg>

 --- # Understanding learning - Growth and fixed mindsets - Reframe success + failure as opportunities for growth - Growing area of research by [Carol Dweck of Stanford](https://www.youtube.com/watch?v=hiiEeMN7vbQ) --- # Reframing .pull-left[ # From > "I'll never understand" > "I just don't get programming" > "I'm not a maths person" ] -- .pull-right[ # To > "I understand more than I did yesterday" > "I can learn how to program" > "Compared to this last week, I've learnt quite a bit!" ] --- class: transition # Overview for today - Going from tidy data to a data plot, using a grammar - Mapping of variables from the data to graphical elements - Using different geoms --- # Example: Tuberculosis data .left-code[ The case notifications table From [WHO](http://www.who.int/tb/country/data/download/en/). Data is tidied here, with only counts for Australia. ] .right-plot[ ```r tb_au ## # A tibble: 192 x 6 ## country iso3 year count gender age ## <chr> <chr> <dbl> <dbl> <chr> <chr> ## 1 Australia AUS 1997 8 m 15-24 ## 2 Australia AUS 1998 11 m 15-24 ## 3 Australia AUS 1999 13 m 15-24 ## 4 Australia AUS 2000 16 m 15-24 ## 5 Australia AUS 2001 23 m 15-24 ## 6 Australia AUS 2002 15 m 15-24 ## 7 Australia AUS 2003 14 m 15-24 ## 8 Australia AUS 2004 18 m 15-24 ## 9 Australia AUS 2005 32 m 15-24 ## 10 Australia AUS 2006 33 m 15-24 ## # … with 182 more rows ``` ] --- # The "100% charts" ```r ggplot(tb_au, aes(x = year, y = count, fill = gender)) + geom_bar(stat = "identity", position = "fill") + facet_grid(~ age) + scale_fill_brewer(palette="Dark2") ```  ??? 100% charts, is what excel names these beasts. What do we learn? --- class: transition # Let's unpack a bit. --- # Data Visualisation .blockquote[ "The simple graph has brought more information to the data analyst’s mind than any other device." — John Tukey ] --- # Data Visualisation - The creation and study of the visual representation of data. - Many tools for visualizing data (R is one of them) - Many approaches/systems within R for making data visualizations (**ggplot2** is one of them, and that's what we're going to use). --- # ggplot2 `\(\in\)` tidyverse .left-code[  ] .right-plot[ - **ggplot2** is tidyverse's data visualization package - The `gg` in "ggplot2" stands for Grammar of Graphics - It is inspired by the book **Grammar of Graphics** by Leland Wilkinson † - A grammar of graphics is a tool that enables us to concisely describe the components of a graphic - (Source: [BloggoType](http://bloggotype.blogspot.com/2016/08/holiday-notes2-grammar-of-graphics.html)) ] --- background-image: url(images/grammar-of-graphics.png) background-size: contain background-position: 50% 50% class: center, bottom, white [From BloggoType](http://bloggotype.blogspot.com/2016/08/holiday-notes2-grammar-of-graphics.html) --- # Our first ggplot! .left-code[ ```r library(ggplot2) ggplot(tb_au) ``` ] .right-plot[  ] --- # Our first ggplot! .left-code[ ```r library(ggplot2) ggplot(tb_au, * aes(x = year, * y = count)) ``` ] .right-plot[  ] --- # Our first ggplot! .left-code[ ```r library(ggplot2) ggplot(tb_au, aes(x = year, y = count)) + * geom_point() ``` ] .right-plot[  ] --- # Our first ggplot! (what's the data again?)

  country 	  iso3 	  year 	  count 	  gender 	  age

  Australia 	  AUS 	  1997 	  8 	  m 	  15-24

  Australia 	  AUS 	  1998 	  11 	  m 	  15-24

  Australia 	  AUS 	  1999 	  13 	  m 	  15-24

  Australia 	  AUS 	  2000 	  16 	  m 	  15-24

  Australia 	  AUS 	  2001 	  23 	  m 	  15-24

  Australia 	  AUS 	  2002 	  15 	  m 	  15-24

  Australia 	  AUS 	  2003 	  14 	  m 	  15-24

  Australia 	  AUS 	  2004 	  18 	  m 	  15-24

  Australia 	  AUS 	  2005 	  32 	  m 	  15-24

  Australia 	  AUS 	  2006 	  33 	  m 	  15-24

 --- # Our first ggplot! .left-code[ ```r library(ggplot2) ggplot(tb_au, aes(x = year, y = count)) + * geom_col() ``` ] .right-plot[  ] --- # Our first ggplot! .left-code[ ```r library(ggplot2) ggplot(tb_au, aes(x = year, y = count, * fill = gender)) + geom_col() ``` ] .right-plot[  ] --- # Our first ggplot! .left-code[ ```r library(ggplot2) ggplot(tb_au, aes(x = year, y = count, fill = gender)) + * geom_col(position = "fill") ``` ] .right-plot[  ] --- # Our first ggplot! .left-code[ ```r library(ggplot2) ggplot(tb_au, aes(x = year, y = count, fill = gender)) + geom_col(position = "fill") + * scale_fill_brewer( * palette = "Dark2" * ) ``` ] .right-plot[  ] --- # Our first ggplot! .left-code[ ```r library(ggplot2) ggplot(tb_au, aes(x = year, y = count, fill = gender)) + geom_col(position = "fill") + scale_fill_brewer( palette = "Dark2" ) + * facet_wrap(~ age) ``` ] .right-plot[  ] ??? - First argument provided is the name of the data, `tb_au` - Variable mapping: year is mapped to x, count is mapped to y, gender is mapped to colour, and age is used to subset the data and make separate plots - The column geom is used, `geom_col` - We are mostly interested in proportions between gender, over years, separately by age. The `position = "fill"` option in `geom_bar` sets the heights of the bars to be all at 100%. It ignores counts, and emphasizes the proportion of males and females. --- # The "100% charts" ```r ggplot(tb_au, aes(x = year, y = count, fill = gender)) + geom_bar(stat = "identity", position = "fill") + facet_grid(~ age) + scale_fill_brewer(palette="Dark2") ```  -- What do we learn ??? 100% charts, is what excel names these beasts. What do we learn? --- class: transition left # What do we learn? - Focus is on **proportion** in each category. - Across (almost) all ages, and years, the proportion of males having TB is higher than females - These proportions tend to be higher in the older age groups, for all years. --- # Code structure of ggplot - `ggplot()` is the main function - Plots are constructed in layers - Structure of code for plots can often be summarised as ```r ggplot(data = [dataset], mapping = aes(x = [x-variable], y = [y-variable])) + geom_xxx() + other options ``` --- # How to use ggplot - To use ggplot2 functions, first load tidyverse ```r library(tidyverse) ``` - For help with the ggplot2, see [ggplot2.tidyverse.org](http://ggplot2.tidyverse.org/) --- class: transition # Let's look at some more options to emphasise different features --- .left-code[ ```r ggplot(tb_au, aes(x = year, y = count, fill = gender)) + geom_col(position = "fill") + scale_fill_brewer( palette = "Dark2" ) + * facet_wrap(~ age) ``` ] .right-plot[  ] --- # Emphasizing different features with ggplot2 ```r ggplot(tb_au, aes(x = year, y = count, fill = gender)) + geom_col(position = "fill") + scale_fill_brewer( palette = "Dark2") + * facet_grid(~ age) ```  --- # Emphasise ... ? ```r ggplot(tb_au, aes(x = year, y = count, fill = gender)) + * geom_col() + scale_fill_brewer( palette = "Dark2") + facet_grid(~ age) ```  --- # What do we learn? - `, position = "fill"` was removed - Focus is on **counts** in each category. - Different across ages, and years, counts tend to be lower in middle age (45-64) - 1999 saw a bit of an outbreak, in most age groups, with numbers doubling or tripling other years. - Incidence has been increasing among younger age groups in recent years. --- # Emphasise ... ? ```r ggplot(tb_au, aes(x = year, y = count, fill = gender)) + * geom_col(position = "dodge") + scale_fill_brewer(palette = "Dark2") + facet_grid(~ age) ```  --- # What do we learn? - `, position="dodge"` is used in `geom_col` - Focus is on **counts by gender**, predominantly male incidence. - Incidence among males relative to females is from middle age on. - There is similar incidence between males and females in younger age groups. --- # Separate bar charts ```r ggplot(tb_au, aes(x = year, y = count, fill = gender)) + geom_col() + scale_fill_brewer(palette = "Dark2") + * facet_grid(gender ~ age) ```  --- class: transition # What do we learn? - `facet_grid(gender ~ age) +` faceted by gender as well as age - note `facet_grid` vs `facet_wrap` - Easier to focus separately on males and females. - 1999 outbreak mostly affected males. - Growing incidence in the 25-34 age group is still affecting females but seems to be have stablised for males. --- # ~~Pie charts?~~ Rose Charts ```r ggplot(tb_au, aes(x = year, y = count, fill = gender)) + geom_col() + scale_fill_brewer(palette="Dark2") + facet_grid(gender ~ age) + * coord_polar() + theme(axis.text = element_blank()) ```  --- # What do we learn? - Bar charts in polar coordinates produce rose charts. - `coord_polar() +` plot is made in polar coordinates, rather than the default Cartesian coordinates - Emphasizes the middle years as low incidence. --- # Rainbow charts? ```r ggplot(tb_au, aes(x = 1, y = count, * fill = factor(year))) + geom_col(position = "fill") + facet_grid(gender ~ age) ```  --- # What do we see in the code?? - A single stacked bar, in each facet. - Year is mapped to colour. - Notice how the mappings are different. A single number is mapped to x, that makes a single stacked bar chart. - year is now mapped to colour (that's what gives us the rainbow charts!) --- class: transition # What do we learn? - Pretty chart but not easy to interpret. --- # (Actual) Pie charts ```r ggplot(tb_au, aes(x = 1, y = count, fill = factor(year))) + geom_col(position = "fill") + * facet_grid(gender ~ age) + * coord_polar(theta = "y") + theme(axis.text = element_blank()) ```  --- # What is different in the code? - `coord_polar(theta="y")` is using the y variable to do the angles for the polar coordinates to give a pie chart. --- class: transition # What do we learn? - Pretty chart but not easy to interpret, or make comparisons across age groups. --- # Why? [The various looks of David Bowie](https://www.wired.com/wp-content/uploads/2016/01/DB-Transformation-Colour.gif) .left-code[  ] - Using named plots, eg pie chart, bar chart, scatterplot, is like seeing animals in the zoo. - The grammar of graphics allows you to define the mapping between variables in the data, with elements of the plot. - It allows us to see and understand how plots are similar or different. - And you can see how variations in the definition create variations in the plot. --- class: transition # Your Turn: - Do the lab exercises - Take the lab quiz - Use the rest of the lab time to coordinate with your group on the first assignment. --- # References - [Chapter 3 of R for Data Science](https://r4ds.had.co.nz/data-visualisation.html) - [Data made available from WHO](https://www.who.int/tb/country/data/download/en/) - [Garret Aden Buie's gentle introduction to ggplot2](https://pkg.garrickadenbuie.com/gentle-ggplot2/#1) - [Mine Çetinkaya-Rundel's introduction to ggplot using star wars.](https://github.com/rstudio-education/datascience-box/tree/master/slides/u1_d02-data-and-viz)


The procedure for downloading and installing the sample Sakila database is available at: https://dev.mysql.com/doc/sakila/en/sakila-installation.html mysql> show tables; +----------------------------+ | Tables_in_sakila | +----------------------------+ | actor | | actor_info | | address | | category | | city | | country | | customer | | customer_list | | film | | film_actor | | film_category | | film_list | | film_text | | inventory | | language | | nicer_but_slower_film_list | | payment | | rental | | sales_by_film_category | | sales_by_store | | staff | | staff_list | | store | +----------------------------+ 23 rows in set (0.00 sec)


Exodus 23:2
Thou shalt not follow a multitude to do evil; neither shalt thou speak in a cause to decline after many to wrest judgment:


Plan of presentation
-
Trip summary
-
Tips & tricks
-
Stories
-
Questions
Travel time
-
Departure: 04.04.2016 07:45 from Warsaw, through Frankfurt, to Tokyo Haneda. Flight time: 2+2:25+12:10 =
16h:35m
-
Return: 22.04.2016 10:25 from Tokyo Haneda, through Paris, to Warsaw. Flight time: 12:20+3:55+2:10 =
18h:25m
Budget
-
Plane tickets ( 2226 PLN)
-
Travel insurance (~160 PLN)
-
JR Pass (14 days - 398 EUR)
-
Accomodation (~1500zł)
-
Food, souvenires, entrances, etc (~3500 PLN)
Internet
-
Sim cards with only internet (30 days - 2250 JPY)
-
Mobile wi-fi router (18 days - 89 EUR)
-
Hot spots
Travelling across Japan
-
Trains - Japan Railsways & Private Railways
-
Buses
-
Taxis
-
Ferries
Accomodation
-
Couchsurfing
-
Airbnb
-
Hotels
-
Capsule hotels
-
Manga/Internet caffees
-
Love hotels


Know Your Customer (KYC) procedures are a critical function to assess customer risk and a legal requirement to comply with Anti-Money Laundering (AML) laws. Effective KYC involves knowing a customers identity, their financial activities and the risk they pose.
Following are the steps that you need to complete for KYC/AML :


Kristofer Schlachter
Projects:
Final Projects: Shadow Mapping - Buggy at the moment
Final Projects: Render Target
Project 10 - Particles used to visualize Divergence Free Noise
Project 09 - Multi-Link Inverse Kinematics
Project 08 - Skeletal Animation
Project 07 - Parallax Mapping
Project 07 - Normal Mapping
Project 06 - Mesh Generation
Project 05 - Javascript Matrices
Project 04 - Sphere Tracing with distance fields
Project 04 - more sphere tracing with many cubes
Project 03 - Ray Sphere with Reflection
Project 03 - Ray Box + Ray Quadric
Project 02
Project 01


xia2 is ideally suited to processing multi-crystal (or multi-sweep) datasets, and is able to process more than one dataset simultaneously, providing many features that can make the processing of such datasets both easier and faster. Examples include (but not limited to):
Images or directories can be passed on the command line, as with a normal xia2 job processing a single sweep. We have recently modified xia2 to allow passing multiple directories on the command line (previously all images were required to be in the same directories, or nested in subdirectories), and to allow passing multiple images via the image= parameter:
xia2 -dials /path/to/images/dataset_1 /path/to/images/dataset_2
xia2 -dials image=/path/to/images/sweep_1_0001.cbf image=/path/to/images/sweep_2_0001.cbf
Alternatively, you can specify exactly which images you wish to process in an .xinfo file:
BEGIN PROJECT AUTOMATIC
BEGIN CRYSTAL DEFAULT
BEGIN WAVELENGTH NATIVE
WAVELENGTH 0.979500
END WAVELENGTH NATIVE
BEGIN SWEEP SWEEP1
WAVELENGTH NATIVE
DIRECTORY /path/to/images/
IMAGE sweep_1_0001.cbf
START_END 1 450
END SWEEP SWEEP1
BEGIN SWEEP SWEEP2
WAVELENGTH NATIVE
DIRECTORY /path/to/images/
IMAGE sweep_2_0001.cbf
START_END 1 450
END SWEEP SWEEP2
END CRYSTAL DEFAULT
END PROJECT AUTOMATIC
When processing many datasets simultaneously, it may happen that some datasets will process successfully, but xia2 will fail to process others. By default, xia2 will stop with an error message if any error is encountered, however if the -failover flag is passed on the command line, then xia2 will ignore any failed sweeps and continue processing with only those sweeps that processed successfully.
When xia2 is given a particularly large number of images to process, it may take some time before it appears to start processing the data. This may be for a couple of reasons:
infer the rest of the sweep from the first image header.
Furthermore, xia2 may not make the same conclusion as to the symmetry for each sweep, leading it to process the final dataset in the lowest common symmetry. Sometimes indexing for a given sweep may fail altogether, and specifying the unit_cell= and space_group= parameters (if known) on the command line can help in both these situations.
| Parameter | Description |
|---|---|
| -failover | If processing fails for any sweeps, ignore and just use those sweeps that processed successfully |
| trust_beam_centre=True | Don’t run labelit beam centre search |
| read_all_image_headers=False | Skip reading all image headers - just read the first one for each sweep |
| unit_cell= | Provide a target unit cell to help indexing |
| space_group= | Provide a target space group to help indexing |
By default, xia2 processes each sweep sequentially, using nproc processors. When processing multiple datasets, it may be more efficient to process the sweeps in parallel, by specifying multiprocessing.mode=parallel and using multiprocessing.njob to indicate how many sweeps should be processed simultaneously, using multiprocessing.nproc processors per sweep:
xia2 -dials /path/to/images multiprocessing.mode=parallel \
multiprocessing.njob=2 multiprocessing.nproc=4
Note
This will use a total of njob nproc processors, i.e. processors, which should be less than or equal to the total number of processors available on your machine.
Additionally, xia2 can utilise the processing power of a cluster where available (currently we only support qsub) by specifying the parameter multiprocessing.type=qsub. The parameter multiprocessing.qsub_command may be used (if needed) to e.g. specify which queue jobs should be submitted to:
xia2 -dials /path/to/images multiprocessing.mode=parallel \
multiprocessing.type=qsub multiprocessing.qsub_command="qsub -q low.q" \
multiprocessing.njob=10 multiprocessing.nproc=16
| Parameter | Description |
|---|---|
| multiprocessing.mode=parallel | Process multiple sweeps in parallel, rather than serially |
| multiprocessing.njob=4 | In conjunction with mode=parallel, process 4 sweeps simultaneously |
| multiprocessing.nproc=1 | Use 1 processor per job (sweep) |
| multiprocessing.type=qsub | Submit individual processing jobs to cluster using qsub |
| multiprocessing.type=qsub_command | The command to use to submit qsub jobs |


|
Data Structures | |
| struct | blob |
Files | |
| file | NXTCAM-driver.h |
Mindsensors NXTCam driver. | |
Defines | |
| #define | MAX_BLOBS 8 |
| #define | NXTCAM_I2C_ADDR 0x02 |
| #define | NXTCAM_CMD_REG 0x41 |
| #define | NXTCAM_COUNT_REG 0x42 |
| #define | NXTCAM_DATA_REG 0x43 |
| #define | SIDE_CENTER(X1, X2) ((X1 + X2) / 2) |
Typedefs | |
| typedef blob | blob_array [MAX_BLOBS] |
Functions | |
| bool | NXTCAMinit (tSensors link, ubyte address=NXTCAM_I2C_ADDR) |
| bool | NXTCAMinitTL (tSensors link, ubyte address=NXTCAM_I2C_ADDR) |
| int | NXTCAMgetBlobs (tSensors link, blob_array &blobs, bool mergeBlobs, ubyte address=NXTCAM_I2C_ADDR) |
| int | NXTCAMgetBlobs (tSensors link, blob_array &blobs, ubyte address=NXTCAM_I2C_ADDR) |
| bool | _camera_cmd (tSensors link, byte cmd, ubyte address) |
| int | _mergeBlobs (int blob1, int blob2, int nblobs, blob_array &blobs) |
| int | _merge (int nblobs, blob_array &blobs) |
| void | _sortBlobs (int nblobs, blob_array &blobs) |
| void | NXTCAMgetAverageCenter (blob_array &blobs, int nblobs, int colourindex, int &x, int &y) |
| void | NXTCAMgetCenter (blob_array &blobs, int index, int &x, int &y) |
Variables | |
| tByteArray | NXTCAM_I2CRequest |
| tByteArray | NXTCAM_I2CReply |
| bool | still_merging |
NXTCam Vision System
| #define MAX_BLOBS 8 |
Maximum number of blobs returned by the NXTCam
Definition at line 47 of file NXTCAM-driver.h.
| #define NXTCAM_CMD_REG 0x41 |
Register used for issuing commands
Definition at line 49 of file NXTCAM-driver.h.
| #define NXTCAM_COUNT_REG 0x42 |
Register used to hold number of blobs detected
Definition at line 50 of file NXTCAM-driver.h.
| #define NXTCAM_DATA_REG 0x43 |
Register containing data pertaining to blobs
Definition at line 51 of file NXTCAM-driver.h.
| #define NXTCAM_I2C_ADDR 0x02 |
I2C address used by the NXTCam
Definition at line 48 of file NXTCAM-driver.h.
| #define SIDE_CENTER | ( | X1, | |
| X2 | |||
| ) | ((X1 + X2) / 2) |
Returns the center of a side
Definition at line 53 of file NXTCAM-driver.h.
| typedef blob blob_array[MAX_BLOBS] |
Array of blob as a typedef, this is a work around for RobotC's inability to pass an array to a function
Definition at line 66 of file NXTCAM-driver.h.
| bool _camera_cmd | ( | tSensors | link, |
| byte | cmd, | ||
| ubyte | address | ||
| ) |
This function sends a command to the camera over I2C.
Note: this is an internal function and should not be called directly.
| link | the sensor port number |
| cmd | the command to be sent |
| address | the I2C address to use, optional, defaults to 0x02 |
Definition at line 97 of file NXTCAM-driver.h.
| int _merge | ( | int | nblobs, |
| blob_array & | blobs | ||
| ) |
Go through the blobs and calls _mergeBlobs.
Note: this is an internal function and should not be called directly.
| nblobs | the number of blobs |
| blobs | the array of blobs |
Definition at line 237 of file NXTCAM-driver.h.
| int _mergeBlobs | ( | int | blob1, |
| int | blob2, | ||
| int | nblobs, | ||
| blob_array & | blobs | ||
| ) |
Check if two blobs can be merged into one. blob1 will be replaced with the new merged blob and blob2 will be destroyed.
Note: this is an internal function and should not be called directly.
| blob1 | the index number of the first blob |
| blob2 | the index number of the second blob |
| nblobs | the number of blobs |
| blobs | the array of blobs |
Definition at line 261 of file NXTCAM-driver.h.
| void _sortBlobs | ( | int | nblobs, |
| blob_array & | blobs | ||
| ) |
This function sorts the blobs in the array using insertion sort.
Note: this is an internal function and should not be called directly.
| nblobs | the number of blobs |
| blobs | the array of blobs |
Definition at line 331 of file NXTCAM-driver.h.
| void NXTCAMgetAverageCenter | ( | blob_array & | blobs, |
| int | nblobs, | ||
| int | colourindex, | ||
| int & | x, | ||
| int & | y | ||
| ) |
Calculate the average center of all the blobs of a specific colour.
Note: this is an experimental function and may not function properly yet.
| blobs | the array of blobs |
| nblobs | the number of blobs |
| colourindex | the colour of the blobs of which the average center is to be calculated |
| x | x-coordinate of the center |
| y | y-coordinate of the center |
Definition at line 363 of file NXTCAM-driver.h.
| int NXTCAMgetBlobs | ( | tSensors | link, |
| blob_array & | blobs, | ||
| ubyte | address | ||
| ) |
This function fetches the blob data from the camera.
| link | the sensor port number |
| blobs | the array of blobs |
| address | the I2C address to use, optional, defaults to 0x02 |
Definition at line 182 of file NXTCAM-driver.h.
| int NXTCAMgetBlobs | ( | tSensors | link, |
| blob_array & | blobs, | ||
| bool | mergeBlobs, | ||
| ubyte | address | ||
| ) |
This function fetches the blob data from the camera and merges the colliding ones.
| link | the sensor port number |
| blobs | the array of blobs |
| mergeBlobs | whether or not to merge the colliding blobs |
| address | the I2C address to use, optional, defaults to 0x02 |
Definition at line 168 of file NXTCAM-driver.h.
| void NXTCAMgetCenter | ( | blob_array & | blobs, |
| int | index, | ||
| int & | x, | ||
| int & | y | ||
| ) |
Calculate the center of a specified blob.
Note: this is an experimental function and may not function properly yet.
| blobs | the array of blobs |
| index | the blob that you want to calculate the center of |
| x | x-coordinate of the center |
| y | y-coordinate of the center |
Definition at line 389 of file NXTCAM-driver.h.
| bool NXTCAMinit | ( | tSensors | link, |
| ubyte | address | ||
| ) |
This function initialises camera ready to find blobs and sort them according to size.
| link | the sensor port number |
| address | the I2C address to use, optional, defaults to 0x02 |
Definition at line 112 of file NXTCAM-driver.h.
| bool NXTCAMinitTL | ( | tSensors | link, |
| ubyte | address | ||
| ) |
This function initialises camera ready to track lines.
| link | the sensor port number |
| address | the I2C address to use, optional, defaults to 0x02 |
Definition at line 139 of file NXTCAM-driver.h.
Array to hold I2C reply data
Definition at line 69 of file NXTCAM-driver.h.
Array to hold I2C command data
Definition at line 68 of file NXTCAM-driver.h.
| bool still_merging |
boolean to signal if there are still blobs that might qualify for merging
Definition at line 86 of file NXTCAM-driver.h.


--- layout: page title: RLCS Season X Predictions sidebar_link: false permalink: /blog/test ---
| RLCS X Grid Probabilities | ||||
|---|---|---|---|---|
| TEAM | Make Quarters | Make Semis | Make Final | Win Final |
| Spacestation Gaming | ✓ | ✓ | 61% | 36% |
| G2 Esports | ✓ | ✓ | 60% | 29% |
| Susquehanna Soniqs | ✓ | 61% | 20% | 7% |
| NRG Esports | ✓ | 79% | 33% | 15% |
| Cloud9 | 62% | 41% | 18% | 10% |
| Ghost Gaming | 38% | 20% | 7% | 3% |
| EU |


Verify that cloud log files are protected.
Log files contain sensitive information about client access to resources in your cloud. This data includes the request type, the requested resource, the requestor’s IP, and the time and date of the request. When bucket logging is enabled, the records are aggregated into log files and delivered to a specified bucket.
If log files can be accessed, then you are not complying with basic standards that require protection of client or cardholder data.
 These files are saved to a bucket you specify. By default you are the grantee and full owner. When needed, permissions on this bucket must be changed to allow other users access to any log files stored there.
To verify that cloud log files are protected:
Locate Your AWS Account ID. Sign in to AWS Management Console and access Support Center. In the title bar you can find the 12-digit account ID.
Review policies. Navigate to Policies and review your policies. Make sure that they are configured to protect the log files and attached to the appropriate IAM users.
To protect log files, a best practice is to create and use a policy on the log bucket. This method is more efficient than configuring ACLs, permissions and access groups for the bucket.
This is a summary of steps needed to create and use a policy. The specific policy elements to protect your log files would be prepared similarly.
Locate Your AWS Account ID. Sign in to AWS Management Console and access Support Center. In the title bar you can find the 12-digit account ID.
Create the Policy. Open the IAM console and navigate to Policies > Create Policy. Enter policy name. Paste your prepared policy in the document field. Be sure to use your 12-digit AWS account ID in the policy. See the Overview of Policies section in the AWS IAM documentation for examples and formatting requirements.
Validate Policy Make sure that no errors are dsiplayed when validating the policy. Note there is a Use autoformatting option. When there are no errors, you can create the policy.
Attach Policy The policy needs attachment to IAM users. Navigate to Policies and locate your custom policy. Scroll to the Attached Entities and Attach. Use the filter menu to find all user types, and select the users to attach the custom policy to.


IFIndoorMapController Class Reference
| Inherits from | NSObject |
|---|---|
| Conforms to | CLLocationManagerDelegate MKMapViewDelegate |
| Declared in | IFIndoorMapController.h |
currentFloorplan
Current floorplan
@property (nonatomic, strong) IFMFloorplan *currentFloorplan
Discussion
Current floorplan
Declared In
IFIndoorMapController.h
annotationIconBeacon
Image for beacon map annotation. Set if you want to change default image.
@property (nonatomic, strong) UIImage *annotationIconBeacon
Discussion
Image for beacon map annotation. Set if you want to change default image.
Declared In
IFIndoorMapController.h
annotationIconInfoContent
Content is in area icon image. Set if you want to change default image.
@property (nonatomic, strong) UIImage *annotationIconInfoContent
Discussion
Content is in area icon image. Set if you want to change default image.
Declared In
IFIndoorMapController.h
annotationIconYou
Image for current user annotation.
@property (nonatomic, strong) UIImage *annotationIconYou
Discussion
Image for current user annotation.
Declared In
IFIndoorMapController.h
shouldAddBeaconsToMap
Display beacons on the map
@property (nonatomic, assign) BOOL shouldAddBeaconsToMap
Discussion
Display beacons on the map
Declared In
IFIndoorMapController.h
shouldAddAreasToMap
Display areas on the map
@property (nonatomic, assign) BOOL shouldAddAreasToMap
Discussion
Display areas on the map
Declared In
IFIndoorMapController.h
targetNavigationEnabled
Is target navigation in progress
@property (nonatomic, assign, getter=isTargetNavigationEnabled) BOOL targetNavigationEnabled
Discussion
Is target navigation in progress
Declared In
IFIndoorMapController.h
nextNodeWarrning
Is warrning next node
@property (nonatomic, strong) NSString *nextNodeWarrning
Discussion
Is warrning next node
Declared In
IFIndoorMapController.h
heading
Is heading enabled
@property (nonatomic, assign, readonly, getter=isHeading) BOOL heading
Discussion
Is heading enabled
Declared In
IFIndoorMapController.h
userCoordinate
Current user location calclutated with indoor navigation module.
@property (nonatomic, assign, readonly) CLLocationCoordinate2D userCoordinate
Discussion
Current user location calclutated with indoor navigation module.
Declared In
IFIndoorMapController.h
userTargetCoordinate
Current user target location calclutated with indoor navigation module. Only is target navigation.
@property (nonatomic, assign, readonly) CLLocationCoordinate2D userTargetCoordinate
Discussion
Current user target location calclutated with indoor navigation module. Only is target navigation.
Declared In
IFIndoorMapController.h
hideTruePositionWhenNavigating
Turn off icon of the current location during navigation
@property (nonatomic, assign) BOOL hideTruePositionWhenNavigating
Discussion
Turn off icon of the current location during navigation
Declared In
IFIndoorMapController.h
– setupWithMapView:viewController:floorplan:locationManager:
Initialize map view with location manager and set self as manager delegate.
- (void)setupWithMapView:(MKMapView *)mapView viewController:(UIViewController *)viewController floorplan:(IFMFloorplan *)floorplan locationManager:(CLLocationManager *)manager
Parameters
mapView |
map view |
|---|---|
viewController |
view controller with map |
floorplan |
floorplan data model |
manager |
location manager |
Discussion
Initialize map view with location manager and set self as manager delegate.
Declared In
IFIndoorMapController.h
– start
Start indoor navigation
- (void)start
Discussion
Start indoor navigation
Declared In
IFIndoorMapController.h
– stop
Stop indoor navigation
- (void)stop
Discussion
Stop indoor navigation
Declared In
IFIndoorMapController.h
– stopNavigationToArea
End navigation to area
- (void)stopNavigationToArea
Discussion
End navigation to area
Declared In
IFIndoorMapController.h
– currentArea
Current area base on position from indoor navigation
- (IFMArea *)currentArea
Return Value
area model object
Discussion
Current area base on position from indoor navigation
Declared In
IFIndoorMapController.h
– navigateArea
Target area in navigation
- (IFMArea *)navigateArea
Return Value
nil if no navigation, area model if navigation in progress
Discussion
Target area in navigation
Declared In
IFIndoorMapController.h


Data Science
Accelerator
Home
Learn!
What are we teaching
How does it relate to project and whatever
Often questions are open answer
For many tasks we don`t teach the solution. You need to google it for yourself.
What does it mean to be a Digital Shaper


| Package | Description |
|---|---|
| com.ibm.team.scm.client | |
| com.ibm.team.scm.common | |
| com.ibm.team.scm.common.dto |
| Modifier and Type | Method and Description |
|---|---|
IChangeHistorySyncReport |
IWorkspaceManager.compareBaselineSets(IBaselineSetHandle local,
IBaselineSetHandle remote,
java.util.List<IComponentHandle> componentsToExclude,
org.eclipse.core.runtime.IProgressMonitor monitor)
Compares two baseline sets.
|
IChangeHistorySyncReport |
IChangeHistory.compareChangeHistories(IChangeHistory remoteHistory,
org.eclipse.core.runtime.IProgressMonitor monitor)
Compares this change history to the given remote change history and
returns a report describing their relative synchronization.
|
IChangeHistorySyncReport |
IWorkspaceManager.compareHistories(com.ibm.team.scm.common.IHistoryReference localReference,
com.ibm.team.scm.common.IHistoryReference remoteReference,
int flags,
java.util.List<IComponentHandle> componentsToExclude,
org.eclipse.core.runtime.IProgressMonitor monitor)
Compares two history references.
|
IChangeHistorySyncReport |
IBaselineConnection.compareTo(IBaselineHandle otherBaseline,
org.eclipse.core.runtime.IProgressMonitor monitor)
Compares the change histories of this baseline to the given baseline
and returns a report describing their relative synchronization.
|
IChangeHistorySyncReport |
IFlowNodeConnection.compareTo(IFlowNodeConnection remoteFlowNode,
int flags,
java.util.List excludedComponents,
org.eclipse.core.runtime.IProgressMonitor monitor)
Compares the change histories of this flow node to the given flow
object and returns a report describing their relative synchronization.
|
IChangeHistorySyncReport |
IFlowNodeConnection.compareToBaseline(IBaselineHandle baseline,
org.eclipse.core.runtime.IProgressMonitor monitor)
Compares the workspace with a particular baseline.
|
| Modifier and Type | Method and Description |
|---|---|
IUpdateReport |
IWorkspaceConnection.accept(int flags,
IWorkspaceConnection acceptSource,
IChangeHistorySyncReport syncReport,
java.util.List baselines,
java.util.List incomingChangeSets,
org.eclipse.core.runtime.IProgressMonitor monitor)
Accepts into the workspace the given baselines (one per component) and
additional incoming change sets.
|
java.util.List<IComponentLockReport> |
IWorkspaceConnection.deliver(IWorkspaceConnection remoteConnection,
IChangeHistorySyncReport syncReport,
java.util.List baselines,
java.util.List outgoingChangeSets,
org.eclipse.core.runtime.IProgressMonitor monitor)
Delivers from this workspace the given outgoing baseline and additional
outgoing change sets.
|
| Modifier and Type | Method and Description |
|---|---|
IChangeHistorySyncReport |
CompareWorkspacesException.getSyncReport() |
| Modifier and Type | Method and Description |
|---|---|
IChangeHistorySyncReport |
IAcceptCombinedUpdateReport.getSyncReport()
Returns the value of the 'Sync Report' containment reference
|


Market Study
Click on the image you would rather purchase the most.
Save Progress
Clear History
Retake Survey


ELECTROMANIA
Branch Coordinator's
Ashwini Kumar
Ashwini Kumar
9031033363
<EMAIL_ADDRESS>Rohit Raj Anand
Rohit Raj Anand
9523816344
<EMAIL_ADDRESS>ElectromaniaCircuit of the Day
Searching is as interesting as finding.
About
A week long event which is all about simulation of electronic circuits. An event where you have to think in all multi dimensions which will amalgamate your creativity and your knowledge in electronics. You will have to develop the circuits to solve the real world problems presented one at a time.
Participation Criteria
- B.Tech. 2nd (ECE+EE) , 3rd (ECE+EE) year students
- Team of maximum: 2 (with minimum 1 ECE member)
Contact Info
- Siddharth Suman
-<EMAIL_ADDRESS>-<PHONE_NUMBER>
- Vikas Jangid
-<EMAIL_ADDRESS>-<PHONE_NUMBER>
- Abhishek Kumar Singh
-<EMAIL_ADDRESS>-<PHONE_NUMBER>
Rules
7 days, 7 circuit simulation problems having varying level of difficulties and rewards
ElectromaniaResearch Gap
Microcontrollers to the rescue.
About
This event aims to help students with ideas to present themselves in front of highly talented people whose research have been published in IEEE or similar journals.
Participation Criteria
- ECE, EE 2nd year and 3rd year
- Team of maximum : Individual
Contact Info
- Prateek Anand
-<PHONE_NUMBER>
- Astitva Srivastav
-<PHONE_NUMBER>
Event Rules
Round 1
Candidates have to submit an abstract of their research which he had done on any of the topics or themes mentioned below. NOTE: plagiarism will not be accepted so avoid copying from any of the websites. Do your own research and write on your own, take help from the internet just to collect information but ideas should be strictly yours.
Round 2
In this round presentation or your research will take place (possibly on MS teams). You have to present your work in front of judges and explain them.
Note
- On that day only you will have to present paper based on IEEE format. The paper has to be submitted in pdf format
- Candidate will be judged on the basis of his quality of work, presentation and way of writing his/her article in IEEE format
Themes
Digital India, Smart City, Smart Agriculture, Swachcha Bharat, E governance
Topics
- Artificial Intelligence
- Optical communication
- 5G/ Mobile communication
- Renewable energy resources
- Control Systems/ robotics
- Embedded
- Computer Networking
- Blockchain
- VLSI design
- Analog Electronics
- Big data
- Cyber security
- RT/ Wireless communication
- Cyber security
- Power and energy system
- Sanitization
Note
You can choose any other topic of your choice after approval from the coordinators
ElectromaniaImpromptu
Where spontaneity matters.
About
Electromania presents you with Impromptu, an on the spot circuit designing event which tests the fundamentals of an Electronics Engineer, their presence of mind and their ability to overcome various circuit designing challenges and to solve them with limited resources. An on-the spot circuit designing event which tests the fundamentals of the electronics engineer ,their presence of mind and their ability to overcome various circuit designing challenges with limited resources .
Participation Criteria
- 2nd (ECE+EE) , 3rd (ECE+EE) year students , M.Tech 1st year .
- Team of maximum: 2 , minimum 1 ECE member
Contact Info
- Shubham Tripathi
-<PHONE_NUMBER>
-<EMAIL_ADDRESS>Rules
1st Round: Written Round (Objective)
Basic concepts related to Electronics are tested.
2nd Round (Only For 2nd Year and 3rd year):
Written Round (Subjective) Approach towards solving the circuits is tested.
3rd Round: On Spot Circuit Designing:
Problem statements are given and you have to present a working model of the same onsite.
ElectromaniaFPGA Design event
Reinvent future with all programmable devices!
About
An event to design with programmable logic devices like FPGA.  In this event the very basics of your digital electronics concepts and your verilog coding skills will be tested.
Participation Criteria
- B.Tech. 2nd (ECE+EE) , 3rd (ECE+EE) year students , M.Tech 1st year .
- Team of maximum: 3 (with majority ECE members)
Contact Info
- Adityan Srivastava
-<PHONE_NUMBER>
- Varun Sharma
-<PHONE_NUMBER>
Rules
Round 1:
Abstract submission and progress report. Here the abstract would be evaluated and
the teams would be given green signals.
Round 2:
Simulation result verification.
Round 3:
Presentation and working demonstration.
ElectromaniaQuintathlon
An insight into placements.
About
On the lines of actual placement process, each round is based on rounds conducted by major companies that visit during campus placements. The rounds include Online tests followed by interviews.
Participation Criteria
- B.Tech. 1st (All branches) , 2nd (ECE) , 3rd (ECE) year students.
- Compulsory for B.Tech 2nd and 3rd year ECE students.
Contact Info
- Anupa Saahu
-<EMAIL_ADDRESS>- Amisha Agarwal
-<EMAIL_ADDRESS>- Vatsal Grover
-<PHONE_NUMBER>
Rules
Round 1:
ONLINE – 2nd year (1)
3rd year software(2), 3rd year core (1)
Consultancy (optional for 3rd year)
Round 2:
TECHNICAL INTERVIEW – 2nd year (1)
3rd year software (1), 3rd year core (2)
Round 3:
HR INTERVIEW – 2nd year (1)
3rd year (1)
Consultancy (optional for 3rd year)
ElectromaniaCodotron
Magic is not an illusion, it’s an application.
About
“Make it work, make it right, make it fast.” Codotron is a flagship coding event of Electromania to test competitive programming skills.
Participation Criteria
Team size : 3 ( with 1 ECE member )
B.Tech 2nd ( ECE + EE ) , 3rd ( ECE + EE ) year students, M.Tech 1st year
Contact Info
- Nikhil Agrawal
-<PHONE_NUMBER>
-<EMAIL_ADDRESS>- Mohit Dogra
-<PHONE_NUMBER>
-<EMAIL_ADDRESS>Rules
Online Elimination Round
There will be MCQ Question and subjective questions. This round is basically to know the software knowledge of participants. Top scorers will get selected for final online round and others will get eliminated.
Online Final Round
It is a 5 hours online coding round. It will test your problem modelling and coding skills.
ElectromaniaInnoDev
Think twice, code once
About
Software Development event under Electromania . Each group will be mentored until the completion of the project which can be made on any development platform.
Participation Criteria
- B.Tech. 2nd (ECE+EE) , 3rd (ECE+EE) year students , M.Tech. 1st year .
- Team of maximum: 4 (with at least 1 ECE student)
Contact Info
- Ashwini Ojha
-<PHONE_NUMBER>
-<EMAIL_ADDRESS>- Rohit Anand
-<PHONE_NUMBER>
-<EMAIL_ADDRESS>Rules
Mid-Term Evaluation Round:
Progress is analysed and needful suggestions are provided.
Final Evaluation Round:
The project is judged on some criteria, followed by a presentation.