Code: Select all
Manifest-Version: 1.0
Ant-Version: Apache Ant 1.8.2
Created-By: 1.7.0-b147 (Oracle Corporation)
Class-Path: lib/MEMAP-luokkakirjasto.jar
X-COMMENT: Main-Class will be added automatically by build
Main-Class: merpg.MERPG
Code: Select all
Manifest-Version: 1.0
Ant-Version: Apache Ant 1.8.2
Created-By: 1.7.0-b147 (Oracle Corporation)
Class-Path: lib/MEMAP-luokkakirjasto.jar
X-COMMENT: Main-Class will be added automatically by build
Main-Class: merpg.MERPG
Vaikeustaso kasvaa koko ajan pelin edetessä, mutta itse pelin nopeus ei muutu. Tietenkin siihenkin voisi kokeilla vaikuttaa. Nyt vihollisten määrä kasvaa, kunnes saavutetaan maksimi piste, jolloin niitä ei tule lisää, vaan niiden tekemä vahinko kasvaa, ja jossakin vaiheessa jo yksikin osuma voi viedä puolet aluksen kestosta, jos aluksen kilpi ei ole päällä. Laitan jossakin vaiheessa beta version jakoon, jonka tarkoituksena on kartottaa juurikin vaikeustasoa ja pelinopeutta jne.Sly_Jack0 wrote:Oikein hyvältä näyttää. Graafinen ilme on yhtenäinen ja tyylikäs. Ainoa mikä jäi vähän häiritsemään oli pelin hitaus. Onko peli todella noin hidastempoinen koko ajan vai nopeutuuko se? Kenties vaikeampia vaikeustasoja, jotka ovat sitten nopeampia?
oletko tarkistanut, jos käytät eri merkkisettejä PHP:ssä ja javassa? Esim. Utf-8 javassa ja ASCII PHP:ssä. Tai sitten käsittelevätkö nuo funktiot ulostulevaa merkkijonoa eri merkkiseteillä? Viimeiseksi, miksi edes tarvitsisit kyseistä ominaisuutta?Feuer wrote:PHP:n Hash() ja Javan MessageDigest - luokka palauttavat ihan erilaisia tuloksia samalla syötteellä. Onko kellään tietoa tavasta tuottaa Javassa samanlaisia SHA512 - tiivisteitä kuin PHP:n Hash()?
Näin pitkälle pääsin omassa guuglettelussani, kunnes tuli aika siirtyä muiden projektien pariin. PHP:n ominaisuuksiin kuului muistaakseni melko heikko unicode-tuki.naputtelija wrote: oletko tarkistanut, jos käytät eri merkkisettejä PHP:ssä ja javassa? Esim. Utf-8 javassa ja ASCII PHP:ssä.
Pitäisi autentikoida PHP-softalla luodun käyttäjätaulun pohjalta käyttäjiä samalla serverillä pyörivällä java-softalla.naputtelija wrote: Viimeiseksi, miksi edes tarvitsisit kyseistä ominaisuutta?
Jälkipolville tiedoksi, Javan charset on (ainakin täällä) UTF-16, siinä missä PHP:llä se on mitä sattuu olemaan. Seuraava Javakoodi tuottaa saman tuloksen kuin Hash("SH512", $message, false):
Code: Select all
public static String SHA512(String message) throws NoSuchAlgorithmException, UnsupportedEncodingException
{
message = new String(message.getBytes("UTF-8"));
MessageDigest md = MessageDigest.getInstance("SHA-512");
md.update(message.getBytes());
return getHex(md.digest()).toLowerCase();
}
static final String HEXES = "0123456789ABCDEF";
public static String getHex( byte [] raw )
{
if ( raw == null ) {
return null;
}
final StringBuilder hex = new StringBuilder( 2 * raw.length );
for ( final byte b : raw ) {
hex.append(HEXES.charAt((b & 0xF0) >> 4))
.append(HEXES.charAt((b & 0x0F)));
}
return hex.toString();
}
MessageDigest ei anna tulosta heksoina.Feuer wrote:PHP:n Hash() ja Javan MessageDigest - luokka palauttavat ihan erilaisia tuloksia samalla syötteellä. Onko kellään tietoa tavasta tuottaa Javassa samanlaisia SHA512 - tiivisteitä kuin PHP:n Hash()?
Code: Select all
import java.math.BigInteger;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
public class testi {
public static void main(String[] args)
{
String asd = "salasana";
MessageDigest md = null;
try {
md = MessageDigest.getInstance("SHA-512");
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
byte[] digest = md.digest( asd.getBytes());
BigInteger hash = new BigInteger(1, digest);
String hashword = hash.toString(16);
System.out.println(hashword);
}
}
Code: Select all
e8e646b38387254e1f677d4df3ca290b03318440b87f4d45d67fe7b7c76a6316cf616fb155a61bb489c8eae829b837ae460421c31c450bddc02daee1ee3d609
Code: Select all
echo hash("sha512", "salasana");
Code: Select all
0e8e646b38387254e1f677d4df3ca290b03318440b87f4d45d67fe7b7c76a6316cf616fb155a61bb489c8eae829b837ae460421c31c450bddc02daee1ee3d609
Code: Select all
package servletter;
import Entiitit.Luonnos123;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Date;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.EntityTransaction;
import javax.persistence.Persistence;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
*
* @author Feuer
*/
public class LuonnosTallennin extends HttpServlet {
/**
* Processes requests for both HTTP
* <code>GET</code> and
* <code>POST</code> methods.
*
* @param request servlet request
* @param response servlet response
* @throws ServletException if a servlet-specific error occurs
* @throws IOException if an I/O error occurs
*/
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
String luonnos = request.getParameter("luonnos"), lähettäjä = request.getParameter("lähettäjä");
Luonnos123 tallennettava = new Luonnos123(luonnos, lähettäjä, new Date());
EntityManagerFactory factory = Persistence.createEntityManagerFactory("ApinatestiPU");
EntityManager manager = factory.createEntityManager();
EntityTransaction transkatio = manager.getTransaction();
transkatio.begin();
manager.persist(tallennettava);
manager.flush();
transkatio.commit();
manager.close();
factory.close();
response.sendRedirect("/index.jsp");
out.close();
}
// <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
/**
* Handles the HTTP
* <code>GET</code> method.
*
* @param request servlet request
* @param response servlet response
* @throws ServletException if a servlet-specific error occurs
* @throws IOException if an I/O error occurs
*/
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
/**
* Handles the HTTP
* <code>POST</code> method.
*
* @param request servlet request
* @param response servlet response
* @throws ServletException if a servlet-specific error occurs
* @throws IOException if an I/O error occurs
*/
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
/**
* Returns a short description of the servlet.
*
* @return a String containing servlet description
*/
@Override
public String getServletInfo() {
return "Short description";
}// </editor-fold>
}
Code: Select all
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package Entiitit;
import java.io.Serializable;
import java.util.Date;
import javax.persistence.*;
/**
*
* @author Feuer
*/
@Entity
public class Luonnos123 implements Serializable
{
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
public Luonnos123() {
}
public Long getId() {
return id;
}
@Column(nullable=false, name="Luonnos")
private String Luonnos;
@Column(nullable=false, name="Lahettaja")
private String Lähettäjä;
@Column(nullable=false, name="Lahetetty")
@Temporal(javax.persistence.TemporalType.DATE)
private Date Lähetetty;
public String getLuonnos() {
return Luonnos;
}
public void setLuonnos(String Luonnos) {
this.Luonnos = Luonnos;
}
public Date getLähetetty() {
return Lähetetty;
}
public void setLähetetty(Date Lähetetty) {
this.Lähetetty = Lähetetty;
}
public String getLähettäjä() {
return Lähettäjä;
}
public void setLähettäjä(String Lähettäjä) {
this.Lähettäjä = Lähettäjä;
}
public Luonnos123(String Luonnos, String Lähettäjä, Date Lähetetty) {
this.Luonnos = Luonnos;
this.Lähettäjä = Lähettäjä;
this.Lähetetty = Lähetetty;
}
}
Code: Select all
int mins = 2;
double secs = 4.24;
String.format("%d:%02.2f", mins, secs);
Nerver mind, sain toimimaan näin:
Code: Select all
String.format("%d:%05.2f", mins, secs);
Maveniin vaihtaminen voi olla joka tapauksessa hyvä idea.Sly_Jack0 wrote:Tarvitsisin apua Antin kanssa. Elikkäs minulla on projekti, joka vaatii eri alustoilla eri versiot ulkoisista kirjastoista. Nykyisellään Ant skriptini osaa kopioida oikeat kirjastot ajattevan alustan perusteella. Esim. siis, jos ajan skriptin 32-bittisellä Windowsilla, se kopioi win32 kirjastot pakettiin. Haluaisin kuitenkin skriptin, joka osaisi tehdä monta eri buildia eri kirjastoilla. Elikkä siis skriptin pitäisi alustasta riippumatta luoda kansiot esimerkiksi win32, win64 ja mac alustoille ja jokaiseen projekti .jar:ssa ja oikeat kirjastot mukaan. Onnistuuko tälläinen Ant:lla vai pitääkö vaihtaa Maveniin?
Anteeksi tuplaposti.
Code: Select all
Luokka.class.getClassLoader().getResources(String ref);